You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将gmtime生成的日期字符串保存为可提取的变量?

Perl 日期数组元素提取问题解决

你写的代码里,虽然声明了全局的@dates数组,但在for循环内部又重新用my @dates = gmtime ($time);声明了同名数组,这会覆盖外部的数组,导致全局的@dates始终是空的,自然没法通过$dates[0]提取日期字符串。另外,你当前只是直接打印strftime的结果,没有把格式化后的日期字符串存入数组。

以下是修正后的代码:

#!/usr/bin/perl

use strict;
use warnings;

use POSIX qw{strftime};

my @dates;

my $time = time();
my $seconds_per_day = 24*60*60;

# 生成从明日开始的10天日期,存入@dates数组
for (1..10){
    $time += $seconds_per_day;
    my @time_parts = gmtime($time);
    # 将格式化后的日期字符串push到数组中
    push @dates, strftime("%a %d %b %Y", @time_parts);
}

# 现在可以正常提取数组元素了
print "第一天的日期:$dates[0]\n";

# 打印所有日期验证
print join("\n", @dates), "\n";

修改说明

  • 移除循环内部的my @dates,避免覆盖全局数组
  • 将strftime生成的日期字符串通过push存入全局的@dates
  • 重命名$seconds为$seconds_per_day,提升代码可读性
  • 添加了提取$dates[0]的示例,验证数组可用

内容的提问来源于stack exchange,提问作者Zilore Mumba

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 17:07:34