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());