我正在使用Perl創建一個將發送密碼到期通知的腳本。計算Perl中兩個日期之間的天數
我有兩個日期:
- 的用戶設置密碼
,該用戶的密碼將過期(在設置密碼後180天)的日期
use DateTime::Format::Strptime; my $dt_pattern = DateTime::Format::Strptime->new(pattern => '%F',); my $displayName = $entry->get_value("displayName"); my $pwdLastSet = convertWinFileTimestamp($entry->get_value("pwdLastSet")); # Determine password expiration date my $pwdLastSet_dt = $dt_pattern->parse_datetime($pwdLastSet); my $pwdExpirationDate = $pwdLastSet_dt->add(days => $maxPwdAge); # Days until password expires # HELP!!!!!!! sub convertWinFileTimestamp { my $timestamp = shift; # Strip off nanoseconds, then adjust date from AD epoch (1601) to UNIX epoch (1970) return POSIX::strftime("%Y-%m-%d", localtime(($timestamp/10000000) - 11644473600)); }
日期
我想不出如何計算兩個日期之間的差異!
下面是每個變量的輸出:
pwdLastSet: 2015-02-12
pwdExpireDate: 2015-08-11T00:00:00
任何幫助非常讚賞...一直使用Google像瘋了似的,但我想不出它...謝謝!
我嘗試下面的代碼行:
my $pwdDaysLeft = int(($pwdExpirationDate - $pwdLastSet)/86400);
而且得到了以下錯誤:
Only a DateTime::Duration or DateTime object can be subtracted from a DateTime object. at pwdreminder.pl line 65
谷歌搜索問題的標題帶來了這樣的:http://www.perlmonks.org/?node_id=17057作爲第一個結果。請解釋它如何不適合你? – Arkadiy
當我添加以下代碼行時,出現以下錯誤:my $ pwdDaysLeft = int(($ pwdExpirationDate - $ pwdLastSet)/ 86400); 「只有DateTime :: Duration或DateTime對象可以從DateTime對象中減去。at pwdreminder。pl line 65「 –
什麼是」convertWinFileTimestamp「?大概$ maxPwdAge是180?通過'pwdExpireDate',你的意思是'$ pwdExpirationDate'嗎?最好是展示一個我們可以運行的自包含的代碼片段 – Borodin