COleDateTime 解析不可靠的 DateTime
Unreliable DateTime parsing by COleDateTime
我正在尝试使用 COleDateTime
class 提供的 ParseDateTime
方法解析日期。但是在同一个程序中解析两个不同的日期返回的月份值不一致。
代码段:
COleDateTime dtCreated;
dtCreated.ParseDateTime(safe_cast<CString>(strCreatedDate));
不一致的结果:
if strCreatedDate
= "10/7/2020"(格式为 mm.dd.yyyy)
然后dtCreated.GetMonth()
= 7(但应该是10)
if strCreatedDate
= "7/29/2020"(格式为 mm.dd.yyyy)
那么dtCreated.GetMonth()
= 7(在这种情况下,它是正确的)
更新:
strCreatedDate
变量中的日期值可以是“dd.mm.yyyy”或“mm.dd.yyyy”格式。但是我确实在一个单独的变量中有关于可用数据格式的信息。根据格式,我希望 COleDateTime
正确解析 DateTime 字符串。我该怎么做?
由于 String^
是您的输入,您可以使用 DateTime::ParseExact
,然后使用 DateTime.ToOADate
:
将 DateTime
转换为 COleDateTime
COleDateTime dtCreated(DateTime::ParseExact(
strCreatedDate, isDMY ? "d.M.yyyy" : "M.d.yyyy", nullptr).ToOADate());
我正在尝试使用 COleDateTime
class 提供的 ParseDateTime
方法解析日期。但是在同一个程序中解析两个不同的日期返回的月份值不一致。
代码段:
COleDateTime dtCreated;
dtCreated.ParseDateTime(safe_cast<CString>(strCreatedDate));
不一致的结果:
if strCreatedDate
= "10/7/2020"(格式为 mm.dd.yyyy)
然后dtCreated.GetMonth()
= 7(但应该是10)
if strCreatedDate
= "7/29/2020"(格式为 mm.dd.yyyy)
那么dtCreated.GetMonth()
= 7(在这种情况下,它是正确的)
更新:
strCreatedDate
变量中的日期值可以是“dd.mm.yyyy”或“mm.dd.yyyy”格式。但是我确实在一个单独的变量中有关于可用数据格式的信息。根据格式,我希望 COleDateTime
正确解析 DateTime 字符串。我该怎么做?
由于 String^
是您的输入,您可以使用 DateTime::ParseExact
,然后使用 DateTime.ToOADate
:
DateTime
转换为 COleDateTime
COleDateTime dtCreated(DateTime::ParseExact(
strCreatedDate, isDMY ? "d.M.yyyy" : "M.d.yyyy", nullptr).ToOADate());