我一直在幫助某人調試錯誤消息是「一天太大」的代碼。我知道這是由當地時間和Y2038錯誤引發的(大部分谷歌搜索結果似乎是處理cookie的人將會過期)。爲什麼我從Perl中得到「Day too large」錯誤?
我們會通過時間來獲得當前的日期已經「固定」的問題。然而,鑑於我們的原始日期都不應該觸及2038年的問題,我懷疑我們實際上已經解決了這個問題......
是否有其他實例,任何人都知道哪裏會打「一天太大「?
OS是Solaris操作系統。
示例代碼 - 實際的代碼是相當大的,我有沒有實際孤立有問題的部分工作的人(這就是爲什麼我擔心的「修復」實際上不是修復)。如果我能把一些簡潔的東西放在一起再現這個問題,我會發布!
UPDATE
我孤立的碼位,把周圍的一切都有些打印報表已經解決了這個問題...
問題的代碼行是:
$temp = str2time(localtime());
這是經常(但並非總是)將$ temp設置爲undef。事實證明,即使設置了$ temp,它也沒有被設置爲預期值。
的小問題,就是本地時間()返回在大多數情況下數組......和那正是搞亂調用str2time。
通過這一改變到:
$ltime = localtime;
$temp = str2time($ltime);
問題消失。
當然,更重要的是,只需使用:
$temp = time;
你有示例代碼和環境/ OS的描述? – 2010-03-30 05:27:56