私はperlの経験がなく、オフセットを追加した後に日付を出力するユーティリティを作成する必要があります。フォーマット文字列はstrftimeフォーマット文字列です。
形式:./ adddate number_of_days [format_string]
例:./ adddate -1 "%a、%b%d"#昨日の日付を出力します
いくつかの調査の後、私はコードを書くことができました:
#!/usr/bin/perl
use DateTime;
$offset = $ARGV[0];
$format = $ARGV[1];
$dt = DateTime->now();
$dt->add( days => $offset );
print $dt->strftime($format)."\n";
日数を追加するにtm_mday
は、時間のフィールドを分割形式でインクリメントするだけです ( によって返されlocaltime
ます)。A mktime
-localtime
ラウンドトリップは、月または年のロールオーバーを考慮して再正規化します。
use strict;
use feature qw( say );
use POSIX qw( mktime strftime );
my $offset = $ARGV[0];
my $format = $ARGV[1];
my @t = localtime;
$t[3] += $offset; # tm_mday field
say strftime( $format, localtime mktime @t );
すべてのコア モジュール。