gpt4 book ai didi

c++ - 在没有 UTC 时区的正确时间总和

转载 作者:太空宇宙 更新时间:2023-11-04 13:08:53 25 4
gpt4 key购买 nike

我在中欧使用 Visual Studio 2010 编写 MFC 程序。

我有 2 个时间选择器,用于获取两个不同工作的持续时间然后我使用 CTime 变量在这些控件中设置的时间进入我的代码。

我还有一个编辑控件,它必须显示之前设置的 2 个选择器的总和。

我的代码如下:

CTime       TimeJob1;
CTime TimeJob2;

CTimeSpan CTSTotalJobsTime, CTSJob1, CTSJob2;

m_DTP_Job1. GetTime(TimeJob1);
m_DTP_Job2. GetTime(TimeJob2);

CTSJob1 = TimeJob1 - CTime(0);
CTSJob2 = TimeJob2 - CTime(0);

CTSTotalJobsTime = CTSJob1 + CTSJob2;

CString strTotalJobsTime = CTSTotalJobsTime.Format(_T("%H:%M:%S"));
m_EditTotalJobsTime.SetWindowText(strTotalJobsTime);

当我编辑时间选择器控件并计算两个时间的总和时,好像我有 1 小时的偏移量。

我尝试以更好的方式解释。

如果我将第一个作业的持续时间设置为 01:00:00,将第二个作业的持续时间设置为 01:00:00,则编辑控件中的时间总和为 00:00:00。

如果我将第一个作业的持续时间设置为 02:00:00,将第二个作业的持续时间设置为 02:00:00,则编辑控件中的时间总和为 01:00:00。

如果我将第一个作业的持续时间设置为 05:00:00,将第二个作业的持续时间设置为 01:00:00,则编辑控件中的时间总和为 04:00:00。

如果我将第一个作业的持续时间设置为 02:00:00,将第二个作业的持续时间设置为 04:00:00,则编辑控件中的时间总和为 01:00:00。

我想是由于我的系统时间 (UTC+1) 和 Time(0) 的 UTC 时间不同导致的问题。

我错了吗?我该如何解决这个问题?

谢谢

编辑我以这种方式在 OnInitDialog() 上初始化我的时间选择器:

CTime timeTime(1970, 1, 2, 0, 0, 0);

m_DTP_Job1->SetTime(&timeTime);
m_DTP_Job2->SetTime(&timeTime);

最佳答案

这是我的解决方案:

我尝试使用 CTimeSpan 和日期时间选择器控件,但我发现它们对我不起作用,因为 CTimeSpan 参数是天、小时、分钟、秒,而我仅将日期时间选择器用于时间(没有天) ).

因此,当我将小时设置为 00 时,多亏了 UTF 自动转换,我的 CTimeSpan 将日期更改为之前的日期并将小时设置为 23。

所以,我决定删除日期时间选择器并使用 3 个不同的 CEdit 来表示小时、分钟、秒。

关于c++ - 在没有 UTC 时区的正确时间总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40847881/

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