我目前正在開發一個項目,要求我們的軟件必須運行至少2050年。最近我們遇到了處理NTP中Y2.036K「bug」的問題協議和Y2.038K錯誤。基本上,我們的軟件必須繼續運行這些日期,並使用正確的時間戳記錄所有數據。鑑於目前還沒有解決這些錯誤的方法,必須採用一種解決方法。處理Y2.036K和Y2.038K錯誤
在這兩個事件並正確記錄日期之後,我們的軟件保持運行至關重要。操作系統系統時間正確無關緊要。鑑於我們正在使用Java,我們應該能夠處理相對於1900年的主要時期的日期。然而,如果系統時間在1970年的UNIX時代之前設置,java JVM甚至不會運行!它只是崩潰。
爲了增加燃料消耗,NTP服務器由另一個供應商提供,我們無法控制它。所以使用其他協議或修改服務器來處理這些是不可能的。
需要創造性的解決方案。不用說,必須發生一些深沉的巫術。我們曾考慮以下幾點:
從日期修改NTPD客戶端軟件以某種方式與NTP服務器協同工作和偏差的本地時間大於Unix紀元1970年,而不是1900年。因此,允許對JVM在初始化時運行時不會崩潰。所有的時間戳將被處理相對於我們選擇的翻轉日期。 (所以基本上,確保我們翻轉到比Unix紀元更大的日期)。
允許ntp更正的時間翻轉到1900時期並找到修復,以便JVM不會崩潰。
有沒有其他人處理過這個問題?還有,我還沒有預見到可能會發生的其他問題,使這些解決方案中的一個或兩個都不可行嗎?
如果您的軟件只需要運行到2050年,爲什麼2360年和2380年對您來說是一個問題? – Bombe 2009-09-09 13:58:21
Ooopps! Y2.036K和Y2.038K。我的錯。 – S73417H 2009-09-09 14:09:44
很長時間 - 你有沒有找到解決方案?這是什麼?非常有趣的問題。 – chx 2011-01-06 00:47:23