问题

问题

我正在测试 MATLAB 以确保我正确应用其功能。 数据源的示例包括:

  • 当前时间(UNIX 纪元秒)为:1160967053
  • 纽约当前时间 2006 年 10 月 15 日 22:50:53 EDT

我假设以上是正确的并且尝试在 MATLAB 中重现结果:

dt = 日期时间( 1160967053, 'ConvertFrom', 'posixtime' )

返回:

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

这个结果是 +4 小时:我原本期望 +5 小时。纽约时间为 UTC -5。夏令时相差1小时?

将时区添加到函数时,结果与参考示例匹配:

T = datetime(1160967053,'ConvertFrom','posixtime','时区','美国/纽约')

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

问题

  • 如果纽约市是 UTC -5,为什么相差 4 小时?

答案1

是的,时间戳 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

是的,晚了四(四)小时。

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 小时)

我没有看到任何问题。

相关内容