fra*_*sto 3 ubuntu time timezone go
使用Ubuntu 12.04
clientSendTimeHeaderFormat := "2006-01-02T15:04:05-0700"
ctx := "2015-04-01T10:04:00-0700"
clientSendTime, err := time.Parse(clientSendTimeHeaderFormat, ctx)
name, offset := clientSendTime.Zone()
Run Code Online (Sandbox Code Playgroud)
在服务器上,名称返回空,而偏移在-25200处是正确的.clientSendTime打印为"2015-04-01 10:04:00 -0700 -0700".
在我的Mac上本地运行它会正确返回名称和偏移量.该名称返回正确的区域"PDT".本地clientSendTime打印为"2015-04-01 10:04:00 -0700 PDT"
我还在本地运行时从服务器复制了/ usr/share/zoneinfo文件夹,以确保它不是由于它的差异.
有谁知道可能导致这些差异的原因?
好的,所以我想我知道为什么会这样 - 但不是一个体面的解决方案.
在对文件Parse说:
解析具有-0700之类的区域偏移的时间时,如果偏移对应于当前位置(本地)使用的时区,则Parse在返回的时间内使用该位置和区域.否则,它将时间记录在一个制造的位置,时间固定在给定的区域偏移处.
当您在太平洋时间时,区域偏移确实与您的位置匹配 - 因此它可以使用您的本地时区"名称"(ick; PDT实际上不是时区名称,但我们会将其留给一个侧).当您的服务器解析它时,它必须构建位置 - 这就是您看到"-0700 -0700"的原因.
从根本上说,您无法仅根据偏移确定时区 - 在同一时刻可能存在多个具有相同偏移的时区,因此您无法预测任何偏移在原始时区中的位置.其他时间.我建议您只记录您实际知道的内容 - 即偏移量 - 并且不要尝试推断实际不存在的信息.
| 归档时间: |
|
| 查看次数: |
487 次 |
| 最近记录: |