Timezone

MATLAB 中的 UNIX 紀元時間驗證

  • May 8, 2018

我正在測試 MATLAB 以確保我正確地應用了它的功能。 來自數據源的範例包括:

  • 目前時間(以 UNIX 紀元秒為單位)為:1160967053
  • 紐約目前時間是 Sun Oct 15 22:50:53 EDT 2006

我假設以上是正確的,並試圖在 MATLAB 中重現結果:

> > dt = 日期時間(1160967053,‘ConvertFrom’,‘posixtime’) > > >

返回:

dt = 16-Oct-2006 02:50:53

這個結果是 +4 小時:我期待 +5 小時。紐約時間是UTC -5。有1小時的差異:夏令時?

將時區添加到函式時,結果與參考範例匹配:

> > T = datetime(1160967053,‘ConvertFrom’,‘posixtime’,‘TimeZone’,‘America/New_York’) > > >

T = 15-Oct-2006 22:50:53

問題

  • 如果 NYC 是 UTC -5,為什麼相差 4 小時?

是的,時間戳 1160967053 代表這個日期(在 UTC 上):

$ date -ud @1160967053
Mon Oct 16 02:50:53 UTC 2006

紐約的正確時間是:

$ TZ="America/New_York" date -d @1160967053
Sun Oct 15 22:50:53 EDT 2006

是的,晚了 4(四)小時。

EDT 標籤清楚地寫著:東部夏令時間。

那年“標準”時間的下一個變化是:

$ zdump -c 2006,2007 -v /usr/share/zoneinfo/America/New_York
/usr/share/zoneinfo/America/New_York  Sun Apr  2 06:59:59 2006 UT = Sun Apr  2 01:59:59 2006 EST isdst=0 gmtoff=-18000
/usr/share/zoneinfo/America/New_York  Sun Apr  2 07:00:00 2006 UT = Sun Apr  2 03:00:00 2006 EDT isdst=1 gmtoff=-14400
/usr/share/zoneinfo/America/New_York  Sun Oct 29 05:59:59 2006 UT = Sun Oct 29 01:59:59 2006 EDT isdst=1 gmtoff=-14400
/usr/share/zoneinfo/America/New_York  Sun Oct 29 06:00:00 2006 UT = Sun Oct 29 01:00:00 2006 EST isdst=0 gmtoff=-18000

所以,如果我們提前 15 天,時間是:

$ TZ="America/New_York" date -d "Sun Oct 15 22:50:53 EDT 2006 + 15 days"
Mon Oct 30 21:50:53 EST 2006

那是 EST:東部標準時間(或比 UTC+0 晚 5 小時)

我看不出有什麼問題。

引用自:https://unix.stackexchange.com/questions/442411