我正在使用中欧的Visual Studio 2010编写MFC。
我有两个时间选择器,用于获得两个不同的工作的持续时间 然后我使用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)与时间(0)的UTC时间不同,我认为是一个问题。
我错了吗?我该如何解决这个问题?
由于
修改 我以这种方式在OnInitDialog()上初始化我的时间选择器:
CTime timeTime(1970,1,2,0,0,0);
m_DTP_Job1->SetTime(&timeTime);
m_DTP_Job2->SetTime(&timeTime);
答案 0 :(得分:0)
这是我的解决方案:
我尝试使用CTimeSpan和日期时间选择器控件,但我看到它们不适合我,因为CTimeSpan参数是日,小时,分钟,秒,而我只使用日期时间选择器的时间(没有天) )。
因此,当我将小时数设置为00时,由于UTF自动转换,我的CTimeSpan将日期更改为预设日期并将小时数设置为23。
所以,我决定删除日期时间选择器并使用3个不同的CEdit进行小时,分钟,秒。