这似乎应该是一个没有大脑的人。以下是已知信息。我知道“票”的日期时间。我知道它的时区,因为票的属性之一是它的时区PST/PDT、EST/EDT、CST/CDT、MST/MDT
所以我有TicketTime和TicketTimezone。TicketTime不一定是运行此代码的计算机的本地时间,因此我无法使用LocalTime。Windows应该知道任何给定日期是否为夏令时/夏令时。
我的客户要求我们始终以UTC时间返回。
有了以上这些,应该是孩子们的游戏来实现这一点。但我无法理解,我也没有找到答案。
使用SysUtils、DateUtils;函数ConvertToUTC(LocalDateTime:TDateTime;TimeZoneID:string):TDateTime;无功功率,无功功率TZ:T时区;UTCOffset:TTimeSpan;开始//获取时区信息如果TimeZoneID=“本地”,则TZ:=T时区。本地其他的TZ:=T时区。创建(TimeZoneID);//考虑DST,获取给定本地日期时间的UTC偏移量UTC偏移:=TZ.GetUTC偏移(本地日期时间);//将本地日期时间调整为UTC结果:=LocalDateTime-UTCOffset。总天数;结束;程序测试;无功功率,无功功率本地日期时间,UTCDateTime:TDateTime;TimeZoneID:string;开始//本地日期时间示例LocalDateTime:=dtpLocal。日期时间;//票据日期时间//指定时区ID(例如,“PST/PDT”)时区ID:=“PST/PDT”;//转换为UTCUTCDateTime:=转换为UTC(LocalDateTime,TimeZoneID);//输出结果WriteLn(“本地日期时间:”,DateTimeToStr(LocalDateTime));WriteLn('UTC DateTime:',DateTimeToStr(UTCDateTime));结束;开始测试;结束。
我找到了上面的方法,但在多个地方都失败了。我看过TimeZoneInformation,但看不到如何传入Timezone或偏移量。
我原以为10分钟的剧本会让我像一个在杂草丛中的球。我能写几行吗?