gpt4 book ai didi

winapi - Windows SYSTEMTIME 结构与系统时钟不同吗?

转载 作者:行者123 更新时间:2023-11-29 08:33:33 25 4
gpt4 key购买 nike

以下代码的目标是调用 Win32 函数 FileTimeToSystemTime:

pub fn convert_times(s: SystemTime) -> Option<SYSTEMTIME> {
let mut st = SYSTEMTIME::default();
let x: u64 = unsafe { transmute(s) };
let low = (x & 0x00000000FFFFFFFF) as u32;
let high = ((x & 0xFFFFFFFF00000000) >> 32) as u32;
let fs = FILETIME {
dwLowDateTime: low,
dwHighDateTime: high,
};
if unsafe { FileTimeToSystemTime(transmute(&fs), transmute(&mut st)) } > 0 {
Some(st)
} else {
None
}
}

当我使用已知文件时间 131147233180069965 时,它是根据我计算机的时钟在 2016-08-03T14:41 US-EST(GMT+5) 生成的。我从中得到的返回结构返回 2016-0803T18:41:58.006

这是 +4 小时。

美国东部标准时间是 GMT+5?

是因为夏令时是-1小时吗?

最佳答案

FileTimeToLocalFileTime() 返回 UTC 时间。在美国,通常在 EST 的位置在夏令时期间转换为 EDT,因此它将是 GMT+5 DST-1 或 UTC-4。

要获取本地时区的时间并考虑夏令时,需要调用 SystemTimeToTzSpecificLocalTime()

通常这是不可取的,因为在 UTC 中工作对计算机来说更可取,因为 2 台相互通信的计算机不一定在同一时区。

关于winapi - Windows SYSTEMTIME 结构与系统时钟不同吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38751677/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com