GetLocalTime() 和 GetSystemTime()

今天做MFC的时候发现用 GetLocalTime() 获得的时间一直对不上我的电脑上显示的时间,用GetSystem()却神奇地对上了。

而MSDN上却说GetLocalTime()获得的是当地时间,GetSystemTime() 是UTC时间。晕死了。

又百度了一下,发现有人用MSDN的说法,有人跟我的实践结果一样……

真实的情况搞不懂,还是先记着吧。

这段代码的作用是在 D 盘根目录下生成一个以当前时间命名的文本文件,然后在文件中写入一行表头信息 "%%Time\tState\tY1\tZ1\tX1\tY2\tZ2\tX2\r\n"。之后,程序会不断地打开这个文件,写入一行表头信息,并关闭文件。这个过程会一直持续下去,因为 while(1) 表示这是一个死循环,程序会一直执行其中的代码。 不过这段代码也存在一些问题。首先,sFileName 指针没有初始化,需要分配内存来存储文件名。其次,每次循环都会先关闭文件,再重新打开,这样做效率比较低。正确的写法应该是先打开文件,然后进入循环,每次循环只需要写入一行即可。代码示例: ```cpp static bool g_isSetGZM_File = true; static FILE *tempfile = nullptr; static LPTSTR sFileName = new TCHAR[MAX_PATH]; if (g_isSetGZM_File) { SYSTEMTIME systime; GetLocalTime(&systime); _stprintf_s(sFileName, MAX_PATH, _T("D:\\CANPro\\GZSoluInfo_%04d%02d%02d_%02d%02d.txt"), systime.wYear, systime.wMonth, systime.wDay, systime.wHour, systime.wMinute); if (fopen_s(&tempfile, sFileName, "w") != 0) { MessageBox(NULL, _T("Can not open GZMfile!"), _T("ERROR"), MB_OK); return; } fprintf(tempfile, "%%Time\tState\tY1\tZ1\tX1\tY2\tZ2\tX2\r\n"); g_isSetGZM_File = false; } fprintf(tempfile, "%%Time\tState\tY1\tZ1\tX1\tY2\tZ2\tX2\r\n"); ``` 注意,在这段代码中,我使用了 GetLocalTime 函数来获取本地时间,而不是 GetSystemTime。此外,我使用了 _stprintf_s 函数来格式化文件名,并且在代码结尾处只写入了一行表头信息,因为每次循环只需要写入一行即可。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

写代码的安徒生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值