我在(日期 - 時間)格式 - 「星期一,2011年7月11日11:45:07 +08:00」中的字符串,我需要根據日期時間格式來比較這些字符串,以查找最近的字符串。我應該在這裏使用哪個模塊/方法?如何比較perl和php中基於日期時間的兩個字符串?
2
A
回答
4
use DateTime::Format::Strptime qw();
my $time_str = 'Mon, 11 Jul 2011 11:45:07 +08:00';
# your notation of time zone
# does not comply with relevant standards
$time_str =~ s/([+-]\d\d):(\d\d) \z/$1$2/msx; # kill colon
my $parser = DateTime::Format::Strptime->new(
pattern => '%a, %d %b %Y %T %z',
locale => 'en', # 'Mon', 'Jul' are English
on_error => 'croak',
);
my $datetime = $parser->parse_datetime($time_str);
# Now you have a DateTime object. To compare,
# use the overloaded relation operators.
# <=> operator/sort function works as well.
if ($datetime < $a_different_datetime) {
say 'earlier';
}
1
對於PHP,最簡單的方法是將時間字符串轉換爲strtotime()並比較整數值。最大的整數是最新的。
請注意,如果您尚未設置默認時區,某些版本的PHP會在使用日期函數時發出警告。您可以使用date_default_timezone_set("")
或php.ini的date.timezone = ""
,list of supported timezones。
0
在PHP中,它被稱爲strtotime()
0
你可以嘗試的strtotime()對你有時間戳。那麼只需使用常規比較器比較數字即可。
1
我用Date::Manip在Perl此:
use Date::Manip;
my $datestr1 = "Mon, 11 Jul 2011 11:45:07 +08:00";
my $datestr2 = "Mon, 18 Jul 2011 11:45:07 +08:00";
my $date1 = new Date::Manip::Date;
my $date2 = $date1->new_date;
$date1->parse($datestr1);
$date2->parse($datestr2);
my $result = $date1->cmp($date2); # => -1, 0, 1
print $result, "\n";
相關問題
- 1. 如何比較perl中的字符串日期時間?
- 2. 比較兩個字符串,如日期
- 3. 如何比較基於日期時間的兩個文件?
- 4. 基於PHP中的上一日期的日期時間比較
- 5. PHP比較兩個字符串,並基於字符串
- 6. 比較兩個字符串日期硒
- 7. 比較兩個javascript字符串日期
- 8. PHP:如何比較時間字符串與日期('H:i')?
- 9. 如何比較兩個日期時間
- 10. 比較PHP中的兩個ISO8601日期字符串
- 11. 如何比較javascript中的兩個字符串日期?
- 12. 如何比較Django中的兩個日期時間字段
- 13. Android的GreenDao - 如何比較兩個日期字符串?
- 14. 如何比較兩個日期字符串的值?
- 15. 比較日期和字符串中PDO
- 16. 如何比較字符串形式的時間/日期?
- 17. PHP比較兩個日期
- 18. php - 比較兩個日期
- 19. MySQL PHP - 比較字符串日期
- 20. PHP日期時間比較
- 21. PHP比較日期時間
- 22. 比較兩個日期相結合的日期和時間
- 23. PHP的日期和時間比較
- 24. 比較字符串日期到日期時間
- 25. 如何比較兩個日期字符串
- 26. 日期/字符串比較
- 27. 字符串日期比較
- 28. 如何比較兩個日期時間只忽略日期?
- 29. 如何比較iPhone SDK的兩個日期和時間
- 30. 如何根據日期和時間比較Oracle中的兩個日期值
-1投機的答案。嘗試使用5.3.5彈出警告消息'依靠系統的時區設置是不安全的。 [...]等等。還有更多的代碼需要處理時區分析,你不會顯示。我不認爲這實際上是由PHP標準庫覆蓋的。 – daxim
該警告只是說明它使用默認的時區設置進行日期轉換。這與轉換問題無關,因爲時區在字符串中明確給出。如果你把它作爲輸入,爲什麼系統的時區很重要?我想你將不得不問你的PHP 5.3.5。我的PHP可能已經將配置配置爲其配置的一部分,就像所有正確的PHP安裝應該一樣。除了假設人們實際配置PHP安裝之外,我的回答中沒有任何猜測。 – Naltharial
好吧,這使我的批評無效。編輯您的答案,以便我可以更改我的投票;也許添加一個代碼示例並更改連接模式? – daxim