2010-11-16 137 views
11

我需要閱讀2個日期並進行比較。在Perl中比較日期的最佳方式是什麼?

一個日期是current_date(年,月,日) 另一個是由業務邏輯決定的。 然後我需要比較兩個日期,看看是否一個在另一個之前。

我該怎麼在Perl中做同樣的事情?

我在尋找好的文檔,但是我在Perl中找到了很多日期模塊。不知道哪一個適合它。

+0

您可能對[棧交換建議](http://area51.stackexchange.com/proposals/11464/code-review?referrer=aWNm_PdciyFqjFW8CUacGw2「代碼審查」)感興趣。它幾乎準備好開始測試,只需要更多。 – greatwolf 2011-01-19 04:55:30

回答

18

最受歡迎的日期模塊之一是DateTime,它將處理所有的角落案例和其他周圍的日期數學問題。

此鏈接是DateTime的一個常見問題可以幫助你開始:

DateTime模塊的工作方式是,您將您的時間(這將可能是字符串)轉換爲DateTime對象,然後您可以使用幾種DateTime方法之一進行比較。

在下面的示例中,$dt1$dt2DateTime對象。

$days是兩個日期之間的增量:

my $days = $dt1->delta_days($dt2)->delta_days; 

$cmp是-1,0或1,這取決於$dt1是否小於,等於或大於$dt2更多。

my $cmp = DateTime->compare($dt1, $dt2); 
+11

關於DateTime的許多好事之一是它有完全的操作符重載 - 例如您可以將兩個DateTime對象比作'if($ dt1 <$ dt2){...}' – Ether 2010-11-16 22:14:03

27

如果日期ISO-8601(即YYYY-MM-DD),你不需要驗證它們,你可以按字典比較(即ltgt運營商。)

如果您需要驗證日期,操作日期或解析非標準格式 - 使用CPAN模塊。最好的,恕我直言,是DateTimeDateCalcDate-Simple也不錯。

開始您自己的旅程的好地方是閱讀The Many Dates of PerlDateTime site

相關問題