任何人都可以幫助我如何將這種日期格式「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. 比較不同的日期格式日期「CompareValidator」
- 4. 如何比較不同格式的時間/日期?
- 5. 如何比較不同格式(JavaScript)的2個日期
- 6. 比較格式的日期
- 7. 格式的日期比較
- 8. Perl中如何比較日期?
- 9. 問題比較日期格式相同
- 10. 日期格式和比較日期
- 11. 比較日期 - 日期格式問題
- 12. JS日期格式和日期比較
- 13. 在Python中比較兩種不同格式的日期
- 14. 比較javascript中的不同格式日期
- 15. 在查詢中比較兩種不同的日期格式
- 16. MYSQL中的比較日期varchar格式
- 17. Informatica中的日期格式比較
- 18. Perl與MySQL比較日期
- 19. 比較同一日期中的日期
- 20. 日期比較星期和年格式
- 21. 用python比較不同格式的兩個日期
- 22. 比較不同格式的Oracle SQL日期
- 23. 比較兩個不同格式的日期C
- 24. 使用Javascript比較不同格式的日期
- 25. 比較不同格式的兩個日期對象
- 26. 比較不同的日期格式,存儲爲字符串
- 27. 使用Python比較不同格式的日期和時間
- 28. 不同格式的SQL Server日期時間比較
- 29. 比較不同行中的日期SQL
- 30. 比較不同的格式
split /,?\ s /避免前面的s /// – larelogio 2009-08-25 11:37:57