【发布时间】:2021-05-21 09:37:34
【问题描述】:
我正在尝试使用COleDateTime 类提供的ParseDateTime 方法解析日期。但是在同一个程序中解析两个不同的日期会返回不一致的月份值。
代码片段:
COleDateTime dtCreated;
dtCreated.ParseDateTime(safe_cast<CString>(strCreatedDate));
结果不一致:
如果strCreatedDate = "10/7/2020"(mm.dd.yyyy 格式)
然后dtCreated.GetMonth() = 7 (但应该是 10)
如果strCreatedDate = "7/29/2020"(mm.dd.yyyy 格式)
然后dtCreated.GetMonth() = 7(在这种情况下,它是正确)
更新:
strCreatedDate 变量中的日期值可以是“dd.mm.yyyy”或“mm.dd.yyyy”格式。但我确实在单独的变量中提供了有关可用数据格式的信息。根据格式,我希望 COleDateTime 正确解析 DateTime 字符串。我该怎么做?
【问题讨论】:
-
尝试使用LCID参数。
-
@Dialectus:我确实在另一个变量中提供了有关日期格式(dd.mm.yyyy 或 mm.dd.yyyy)的信息。我可以以某种方式指定用于
ParseDateTime()的正确格式吗?日期是从服务器接收的,它可以是(dd.mm.yyyy OR mm.dd.yyyy)格式。 -
好的,如果你有一个布尔值,并且你只有一个基于该布尔值的精确格式,然后用
sscanf自己解析日期,或者你想要的任何其他东西。你得到三个值,然后用它们调用SetDateTime。 -
日期和时间解析器有产生unexpected results 的历史。这不是我会依赖的东西。我可能只是编写自己的解析器,实际上只是一个字符串拆分,然后是
stoi系列函数之一的 3 个应用程序。 -
顺便说一句,
strCreatedDate是一个什么样的对象?这个safe_cast在这个问题中看起来不合适。
标签: c++ mfc ole coledatetime