问题标签 [coledatetime]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - COleDateTimeSpan::GetTotalSeconds() 返回秒 + 10281600
我成功地创建了 COleDateTimes,然后减去它们以创建一个 COleDateTimeSpan。出于某种原因,调用 GetTotalSeconds() 方法突然开始返回一个巨大的数字,这似乎是秒数加上 10281600。我相信这在以前是有效的。
这是我正在使用的代码:
m_trace.Trace()
是我的追踪方法。奇怪的是,运行 Format() 表明 COleDateTimeSpan 所持有的实际值没有问题,从跟踪结果可以看出:
不太清楚如何处理这个......任何帮助将不胜感激。
c++ - C++ 美国日期的 COleDateTime 中 LCID 的正确用法是什么
我需要解析一个美国日期字符串来提取日期。
我希望这会返回 2014 年 10 月 1 日,但它会返回 2014 年 10 月 10 日
有人可以告诉我我在这里做错了什么吗?
c# - System::DateTime 返回值 1/1/1 00:00:00
我正在尝试从 DateTimePicker 控件获取日期和时间,然后将 datum 的值设置为该值。基准是 System::DateTime (C#)。但是数据是这个“1/1/1 00:00:00”有什么问题?
c++ - ColeDateTime::Format languagespecific 不同的字段
我想将 COleDateTime 格式化为 CString,所以我使用
由于我的程序是多语言的,GetCurrentLocaleID 为我提供了当前选择的 LCID(不是在 Windows 中,而是在我的程序中)。所以上面根据所选的用户语言为我提供了正确格式的字符串,但它始终采用“日期与年份 + 时间与秒”的格式。我认为这是根据 Windows 区域设置的日期的短格式和时间的长格式。
我能做些什么来获得字符串 - 年份只有 2 个数字?- 完全没有年份?- 没有秒的时间部分?
是否有任何开关COleDateTime::Format
可以让我将年份作为 2 位数字,没有秒的时间,但保持由 ? 指定的字段顺序和分隔符LCID
?
当然,我不想更改任何 windows-regional-settings 来执行此操作,并且我不想使用任何固定的格式字符串,_T("%d.%m.%Y %H:%M:%S")
因为这会破坏特定于语言的字段和分隔符的顺序。
感谢您的提示和回答
米查
c++ - 在不使用 VariantTimeToSystemTime 的情况下将 OLE 自动化日期 (OADate) double 转换为 struct tm
我正在用不使用 MFC/ATL 的主要标准 C++ (VS2010) 编写一个 Windows DLL。
父模块确实使用 MFC 并将 a 传递COleDateTime.m_dt
给我的 DLL,它以double
. 我相信这是一个 OLE 自动化日期,也称为 OADate。
我想将它转换为任何类型的标准结构(tm ...),它有天、小时等,而不会将 MFC、OLE 等拉入我的 DLL。
之前有人问过这个问题(Convert Date/Time (as Double) to struct* tm in C++)但是,答案总是 using VariantTimeToSystemTime()
,这忽略了该问题的重点——不使用 MFC / OLE 等。
VariantTimeToSystemTime 的要求是:
头文件 - OleAuto.h
库 - OleAut32.lib
DLL - OleAut32.dll
我的 DLL 目前基本上没有依赖关系,所以我不希望将 OleAut32.dll 拉入这一转换。
到目前为止,我发现的最好的东西就是这个C# mono code,我可以将它转换为 C++。
c++ - COleDateTime 在使用 time_t 构造时添加一个小时
我有一个 struct tm
使用 转换为 UNIX time_t 的对象,mktime
当传递给 的构造函数时,它COleDateTime
似乎增加了一个小时来考虑夏令时(英国时间),即使文档COleDateTime
表明它忽略了 DST。
如果我创建我的时间SYSTEMTIME
并将该对象传递给COleDateTime
问题就会消失。有谁知道为什么会发生这种情况?这是来自遗留代码,因此将所有内容更改为SYSTEMTIME
可能不是解决方案。
这是我的示例代码:
mfc - 获取 COleDateTime::Format 以返回波兰月“January”的“stycznia”而不是“styczeń”
我有这种方法可以将语言环境设置为波兰语:
为简洁起见,我已经删掉了其他语言。现在,当我格式化一个COleDateTime
对象并显示月份时,比如一月,它显示为:
斯蒂琴
但我想将其显示为:
石竹
是否有区域设置来调整COleDateTime::Format
方法或区域返回的月份值?
否则我将不得不手动添加一些东西来覆盖。
我希望返回的月份是:
- 石竹
- 卢特戈
- 马卡
- 桂花
- 玛雅
- 切尔瓦卡
- 利普卡
- 癔症
- 仙人掌
- 帕兹杰尔尼卡
- 列表小册子
- 格鲁德尼亚
更新
根据here它指出:
某些语言,例如芬兰语、德语、波兰语和俄语,有多种名词形式。如果您打算使用系统提供的本地化名称,请进行语言学家检查以确保您在正确的上下文中使用它们。Windows 带有波兰语和俄语月份名称的主格和属格形式;形式根据月份名称在字符串中相对于日期名称的位置而变化。Windows 在由空值分隔的单个字符串中返回这两种形式。对于所有其他语言,系统仅携带一种形式的每月名称或日期名称。
现在,这就是我实际格式化日期字符串的方式(因为我支持 40 多种语言,这有点棘手。所以,(对于英语)我从这个格式字符串开始:
%1
是月份。%2!d!
是第一天的价值。%3!d!
是第二天的值。
如果我的约会需要跨越两个月,我有:
%1
是月份值。%2!d!
是第一天的价值。%3
是第二个月的值。%3!d!
是第二天的值。
上面是这样使用的:
对于Polish,我各自的格式字符串是:
所以,我可以看到,因为我正在格式化日期字符串,FormatMessage
并且仅使用该COleDateTime::Format
方法来解析它可能是问题原因的月份。
由于我在日期字符串中有两个日期,我不能只使用一个日期格式 API 调用(因为我的日期字符串代表一周跨度)。
所以我检查了:
它没有任何区别。所以我尝试了这个:
它没有任何区别。它仍然以与以前相同的方式显示日期。即使它确实正确显示了日期,它也不会考虑来自两个 COleDateTime 对象的日期范围。
使困惑。
更新 2:
也试过:
只是不会显示变体。
更新 3
我可以让它显示正确日期的唯一方法是这样的:
那么月份是正确的。现在在我提到的文章中指出:
Windows 在由空值分隔的单个字符串中返回这两种形式。
我什至无法弄清楚如何访问它。
c++ - 考虑到闰年,向 COledateTime 添加一年的正确方法是什么?
我有这个代码:
上述代码昨天(2020 年 2 月 29 日)失败,因为datEnd
导致2021 年 2 月 29 日无效。
datStart
在考虑闰年的情况下安全地增加一年的正确方法是什么?
C# 有:
MFC/C++ 的等价物是什么?
一种可能性是:
但由于闰年有 366 天,它仍然存在潜在缺陷。那么正确的方法是什么?
我看到这个类似的问题:
这意味着使用boost
. 尽管从未将其用于日期操作,但我的项目确实有所提升。想知道这是否可以与COleDateTime
对象一起使用?
使用boost
:
不编译。
c++ - COleDateTime 不可靠的 DateTime 解析
我正在尝试使用类ParseDateTime
提供的方法解析日期COleDateTime
。但是在同一个程序中解析两个不同的日期会返回不一致的月份值。
代码片段:
不一致的结果:
if strCreatedDate
= "10/7/2020" (mm.dd.yyyy格式) then dtCreated.GetMonth()
= 7 (但应该是 10)
if strCreatedDate
= "7/29/2020" ( mm.dd.yyyy格式) then dtCreated.GetMonth()
= 7 (在这种情况下是正确的)
更新:
变量中存在的日期值strCreatedDate
可以是“dd.mm.yyyy”或“mm.dd.yyyy”格式。但我确实在单独的变量中提供了有关可用数据格式的信息。根据格式,我想COleDateTime
正确解析 DateTime 字符串。我怎样才能做到这一点?
visual-c++ - COleDateTime::SetDateTime 和 noexcept(代码分析)
请参阅此代码:
我的代码分析说我可以添加noexcept
(我做了)。但我决定再调查一下。我注意到它SetDateTime
返回一个值:
Zero
如果这个COleDateTime
对象的值设置成功;否则,1
。此返回值基于DateTimeStatus
枚举类型。有关详细信息,请参阅SetStatus
成员函数。
对于后一个函数 ( SetStatus
),它声明:
status参数值由
DateTimeStatus
枚举类型定义,该类型在COleDateTime类中定义。详情请参阅COleDateTime::GetStatus
。
现在,文档GetStatus
被记录为具有以下定义:
DateTimeStatus GetStatus() const throw();
因此,如果出现错误,它会引发异常。因此,我决定查看 MFC 源代码SetDateTime
:
它用于ConvertSystemTimeToVariantTime
设置状态。这使用:
这使用:
在这一点上,我迷路了。简而言之,我假设SetDateTime
不会引发异常。
我明白这一点,如果我决定GetStatus
在子句内部进行调用,if
那么我们确实有可能引发异常。