C程序函数ctime()返回错误的时间/日期-超出3天

hivapdat  于 2023-05-16  发布在  其他
关注(0)|答案(2)|浏览(137)
#include<stdio.h>
#include<time.h>

int main(void){
    time_t now = time(NULL);
    printf("%s\n", ctime(&now));
    return 0;
}

这是使用GCC编译和运行。结果:Wed May 10 19:13:18 2023实际:2023年5月13日星期六09:45:37(PC系统时间显示正确)为什么会有差异?代码不能更简单了!
环境:我正在Windows 11 PC上运行Windows Subsystem for Linux WSL 2。我不知道这是否重要
尝试研究类似的问题-但这不是UTC/本地时间问题。

u5rb5r59

u5rb5r591#

您遇到的ctime()函数返回错误时间/日期的问题可以通过您的Windows Linux子系统(WSL 2)环境和PC系统时间之间的基础系统时钟差异来解释。
WSL 2在虚拟化环境中运行,并与Windows主机系统同步时间。然而,由于诸如系统时钟漂移或虚拟化层中的定时问题之类的各种因素,时钟同步中可能存在小的差异。
在您的情况下,WSL 2环境似乎落后于Windows 11 PC上的实际系统时间大约三天。当您在WSL 2中运行C程序时,它从底层主机系统检索系统时间,这有三天的差异。
要解决此问题,您可以尝试以下步骤:
更新WSL 2环境中的时间:在WSL 2中打开一个终端,然后运行以下命令以与Windows主机同步时间:
sudo hwclock -s此命令设置WSL 2硬件时钟以匹配Windows系统时间。
重新启动WSL 2示例:如果使用上述命令更新时间不能立即反映WSL 2环境中的正确时间,则可以尝试重新启动WSL 2示例。在Windows主机上打开PowerShell或命令提示符窗口,然后运行以下命令:
wsl --shutdown之后,再次启动WSL 2,时间应该同步。
通过执行这些步骤,您应该能够将WSL 2环境中的时间与Windows 11 PC上的系统时间对齐,确保ctime()函数返回正确的时间/日期。

toe95027

toe950272#

可以运行以下命令并打印输出吗?

sudo hwclock -s

相关问题