ahm*_*md0 3 c++ time winapi utc
我需要能够在Windows机器上将本地时间转换为UTC.我找到了声称这样做的SystemTimeToTzSpecificLocalTime API,但后来我读了它的描述并发现了这个:
SystemTimeToTzSpecificLocalTime函数可能会在以下条件下错误地计算本地时间:
- 时区对新旧年份使用不同的UTC偏移量.
- 要转换的UTC时间和计算的本地时间是不同的年份.
我向MS提出的第一个修辞问题是"编写可靠的API有多难?"
然后,实际的问题 - 你如何在100%的时间内工作?(而不是那种API建议.)
你的两个问题的答案都是基本上不可能的.这是计算机科学人员讨厌处理当地时间的原因之一.
以下是一些混淆问题的例子:当我们从凌晨2点到凌晨1点跳回一小时时,有两个1:30.我们今天也无法知道夏令时的规则是什么,如果有的话,将在十年内.时区边界有时会移动,所以只知道你今天在太平洋时间可能不足以告诉我们你的时区偏移是85年前.今天无法知道将来可能插入或不插入的闰秒.
如果您发现自己处于可能的情况,则必须在特定情况下进行编码,以便在特定情况下进行这些操作.提供的操作是一般化的,并提供"通常正确"的结果,而不限制可以使用它们的情况.
道德:除显示外,不要使用当地时间.即便如此,将过去或未来的时间转换为当地时间也是有问题的.