为何Kronos Workforce Central中TimeStamp与KronosTimeZone时区偏移不一致?
为什么Kronos Workforce Central返回的TimeStamp和KronosTimeZone的GMT偏移不同?
这个差异其实是**夏令时(Daylight Saving Time, DST)**在作怪,咱们一步步拆解清楚:
KronosTimeZone字段的本质
这个字段显示的是服务器配置时区的标准定义信息——你服务器设置的是北美东部时区,它的标准时区(EST,Eastern Standard Time)偏移就是GMT-05:00,所以这个字段会固定展示(GMT -05:00) Eastern Time,不会因为夏令时的到来而改变。TimeStamp字段的实际含义
这个字段是服务器返回的当前时刻的实际时区偏移。你请求的时间是2018年5月9日,而北美东部时区每年3月到11月会启用夏令时(切换为EDT,Eastern Daylight Time),此时实际时区偏移会变成GMT-04:00,所以TimeStamp会如实显示这个生效中的偏移值。验证逻辑的小技巧
你可以在非夏令时的时间段(比如12月)再发一次GetServerTime请求,这时候TimeStamp的偏移就会和KronosTimeZone显示的GMT-05:00完全一致,因为此时夏令时结束,标准EST时区生效。
你发送的请求:
<Kronos_WFC version="1.0"> <Request Object="ServerTime" Action="GetServerTime"/> </Kronos_WFC>
服务器返回的响应:
<Kronos_WFC TimeStamp="5/09/2018 10:23AM GMT-04:00" version="1.0" WFCVersion="8.1.1.569"> <Response Status="Success" Action="GetServerTime" Object="ServerTime"> <ServerTime DateTime="5/09/2018 10:23AM" KronosTimeZone="(GMT -05:00) Eastern Time"/> </Response> </Kronos_WFC>
总结来说:KronosTimeZone展示的是时区的静态标准属性,TimeStamp展示的是当前实际生效的时区偏移,夏令时的切换正是两者出现差异的核心原因。
内容的提问来源于stack exchange,提问作者Stevoisiak
相关产品推荐
相关产品推荐

