我需要一些幫助,在perl中使用日期格式「2012-02-03 00:00:00」計算日期。特別是有沒有一種工具可以用來增加日子,並正確切換到月和年?謝謝。使用格式日期計算perl日期2012-02-03 00:00:00
3
A
回答
8
參見DateTime。
#!/usr/bin/env perl
use strict; use warnings;
use DateTime;
my $ts = '2012-02-03 00:00:00';
my ($y, $m, $d) = ($ts =~ /([0-9]{4})-([0-9]{2})-([0-9]{2})/);
my $dt = DateTime->new(year => $y, month => $m, day => $d);
$dt->add(months => 2, days => 3);
print $dt->strftime('%Y-%m-%d %H:%M:%S'), "\n";
它實際上是一個少許清潔劑使用日期時間::格式類,你會得到錯誤檢查是免費的。
use DateTime::Format::Strptime qw();
my $format = DateTime::Format::Strptime->new(
pattern => '%Y-%m-%d %H:%M:%S',
time_zone => 'local',
on_error => 'croak',
);
my $ts = '2012-02-03 00:00:00';
my $dt = $format->parse_datetime($ts);
$dt->add(months => 2, days => 3);
print $format->format_datetime($dt), "\n";
1
的Time::Piece
模塊是Perl安裝的標準組成部分,可能做所有你需要的。
該程序使用您的示例日期並添加兩個月和三天,然後再增加400天。顯示所述值的兩個替代方式示
use strict;
use warnings;
use Time::Piece;
use Time::Seconds 'ONE_DAY';
my $format = '%Y-%m-%d %H:%M:%S';
my $dt = Time::Piece->strptime('2012-02-03 00:00:00', $format);
$dt = $dt->add_months(2);
$dt += 3 * ONE_DAY;
print $dt->strftime($format), "\n";
$dt += 400 * ONE_DAY;
printf "%s %s\n", $dt->ymd, $dt->hms;
輸出
2012-04-06 00:00:00
2013-05-11 00:00:00
1
這是所有完全可能使用POSIX
時間處理函數核心內。
標準POSIX::mktime
函數已經可以處理非規格化的值,並且可以校正天/月超出範圍。此外,POSIX::strftime
實際上在給定值調用它之前格式化它們,所以它會正確調整。
use POSIX qw(strftime mktime);
use POSIX::strptime qw(strptime);
my $format = "%Y-%m-%d %H:%M:%S";
my @t = strptime("2012-02-03 00:00:00", $format);
@t = @t[0..5]; # Throw away wday and yday
$t[3] += 3; # mday
$t[4] += 2; # mon
say strftime $format, @t;
$t[3] += 400; # mday
say strftime $format, @t;
給人
2012-04-06 00:00:00
2013-05-11 00:00:00
相關問題
- 1. 用Perl格式化日期格式
- 2. 轉換日期格式Perl
- 3. 格式日期選擇* perl
- 4. 轉換日期格式Javascript和計算兩個日期
- 5. 使用php計算日期
- 6. 使用PHP計算日期
- 7. 使用Js計算日期
- 8. 計算日期
- 9. 計算日期
- 10. 計算日期
- 11. 計算日期
- 12. 日期計算
- 13. 計算日期
- 14. SO日期計算和格式化
- 15. 從perl中給定日期計算下一個日期
- 16. Perl:計算日期差異和平均日期
- 17. 日期格式爲日期
- 18. 日期(「8601格式日期」)?
- 19. 日期格式日期
- 20. 從日數計算日期?
- 21. 計算假期日期
- 22. UNIX日期:如何計算日期
- 23. 日期時間/日期扣除計算
- 24. MongoDB按日期和日期計算
- 25. 計算給定日期的日期
- 26. 根據日期編號計算日期
- 27. 按日期計算>日期
- 28. 從兩個日期計算日期
- 29. 根據當前日期計算日期
- 30. 日期,月日,年的日期格式
你也可以看看https://metacpan.org/module/DateTime::Format::MySQL削代碼越往下只是一點點。 – oalders 2012-04-09 01:09:25
我只想用[DateTime :: Format :: Strptime](http://search.cpan.org/dist/DateTime-Format-Strptime/) – runrig 2012-04-09 01:22:08
希望你不要'不介意我添加了Strptime的例子。我修正了原始代碼的輸出;它在日期和時間之間有一個不希望的「T」。 – ikegami 2012-04-09 03:56:54