任何人都可以帮助我如何将这种日期格式“Mon,24 Aug 2009 17:00:44 +0800”转换成这样的东西,“2009-08-24 17:00:44”在Perl中?我一直在CPAN浏览模块,但仍然无法找到我想要的内容。第一种格式是使用Mail :: POP3Client从电子邮件帐户中检索的。另一个来自数据库中的查询。我的目标是比较这两个日期,但如果它们的格式不同,它将无法工作。任何建议请问? =)如何比较Perl中不同格式的日期?
0
A
回答
1
我会用Date::Calc
分割字符串来得到所需的值,并使用解码_
月(“八月”)
use strict;
use warnings;
use Date::Calc qw(:all);
my $datetime = 'Mon, 24 Aug 2009 17:00:44 +0800';
# get each part
my (undef, $day, $month_text, $year, $time, undef) = split('/,?\s/', $datetime);
my $month = Decode_Month($month_text);
# put together in wanted format
my $newdatetime = sprintf("%04d-%02d-%02d $time", $year, $month, $day);
8
我会使用DateTime::Format::Strptime将日期转换成DateTime对象,然后要求它提供所需的日期表示形式。例如: -
my $parser = DateTime::Format::Strptime->new(pattern => '%a, %d %b %Y %T %z');
my $dt = $parser->parse_datetime($original_timestamp);
# Postgres-format timestamp for db storage
my $pg_timestamp = DateTime::Format::Pg->format_datetime($dt);
# Epoch timestamp for if I'm going to do the comparison in code
my $epoch = $dt->epoch;
0
如果您确信您的POP3客户端上的时间戳格式不会改变,那么我会建议转换格式的数据库查询本身。您没有提及您使用的数据库,但是我使用的所有数据库(Oracle,PostgreSQL,MySQL)都具有在您的select语句中为您提供任何格式的功能。
如果你告诉我们你正在使用什么数据库,我可以告诉你什么是时间戳格式化函数。
相关问题
- 1. JavaScript比较不同的日期格式?
- 2. SAS Proc比较 - 日期格式不同
- 3. 如何比较不同格式的时间/日期?
- 4. 格式的日期比较
- 5. Perl中如何比较日期?
- 6. 在查询中比较两种不同的日期格式
- 7. Informatica中的日期格式比较
- 8. MYSQL中的比较日期varchar格式
- 9. Perl与MySQL比较日期
- 10. 使用Python比较不同格式的日期和时间
- 11. 用python比较不同格式的两个日期
- 12. 不同格式的SQL Server日期时间比较
- 13. 比较不同格式的Oracle SQL日期
- 14. 使用Javascript比较不同格式的日期
- 15. 比较不同格式的两个日期对象
- 16. 使用Perl,如何比较YYYY-MM-DD形式的日期?
- 17. 使用JavaScript比较不同日期格式
- 18. 如何在Perl中格式化日期?
- 19. 如何在JavaScript中比较未知格式的日期?
- 20. 比较长日期格式从偏好
- 21. 比较日期Java格式问题
- 22. 日期格式化和比较Javascript
- 23. Highcharts:比较2线,不同的日期
- 24. SQL - 比较不同时区的日期
- 25. 日期不比较
- 26. 如何在Android中以字符串格式比较日期?
- 27. 如何比较perl中的字符串日期时间?
- 28. 在Perl中比较日期的最佳方式是什么?
- 29. 如何在Java中比较两个不同的日期时间?
- 30. 比较日期和时间的PHP日期格式?
split /,?\ s /避免前面的s /// – larelogio 2009-08-25 11:37:57