无UTC时区中的正确时间总和
Correct time sum in no UTC timezone
我正在与中欧的Visual Studio 2010一起编程MFC。
我有2个时间拾取器,我用来获得两个不同的工作的持续时间然后我使用CTIME变量在这些控件中设置的时间。
我也有一个编辑控件,必须显示以前设置的两个选择器的总和。
我的代码如下:
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)和时间的UTC时间(0)。
之间的差异是一个问题。我错了吗?我该如何解决这个问题?
谢谢
编辑我以这种方式在oninitdialog()上初始化了我的时间选择器:
ctime Timetime(1970,1,2,0,0,0,0);
m_DTP_Job1->SetTime(&timeTime);
m_DTP_Job2->SetTime(&timeTime);
这是我的解决方案:
我尝试使用ctimespan和日期选择器控制,但是我看到它们对我不起作用,因为ctimespan参数是日,小时,分钟,第二,我只使用时间选择器(没有时间))。
因此,当我将时间设置为00时,多亏了UTF自动转换,我的ctimespan将一天更改为previes over,并将时间设置为23。
。所以,我决定删除日期时间选择器,并使用3个不同的cedit cedit,持续数小时,分钟,第二个。
- C++:floor unix时间戳到UTC月份
- 提升,以分钟精度获得 UTC 时间
- 从ubuntu上的utc时间计算unix时间
- 如何使用闰秒以微秒为单位获取 UTC 时间
- 将具有 DST 的时间字符串转换为 UTC 时间戳
- 使用 std::chrono / date::gps_clock 将双 GPS 时间戳转换为 UTC/tai
- 高效生成 UTC 时间戳
- 如何在C++中以毫秒为单位获取今天的 UTC 午夜时间?
- C 自定义时间日期结构到UTC时期
- 如何将 UTC 时间戳转换为本地时间,即整点后的几秒钟
- 如何从 UTC 时间戳的组件(Y,M,D,H,M,S,MS)创建system_clock::time_point
- 无UTC时区中的正确时间总和
- Windows UTC时间夏令时是否独立
- 输出boost :: chrono :: system_clock :: time_point作为UTC的本地时间
- 跨平台C++:使用历史数据转换为 UTC/本地时间
- 如何获取UTC时间
- 从SYSTEMTIME到time_t的转换以UTC/GMT表示时间
- C++ 将包含 UTC 日期和时间的字符串转换为 TM 结构
- C++提升以 UTC 格式获取 unix 时间戳
- 将以字符串形式给出的时间(UTC)转换为本地时间