gpt4 book ai didi

c++ - coledatetime 中的值不正确

转载 作者:行者123 更新时间:2023-11-30 02:55:08 25 4
gpt4 key购买 nike

我在 MFC 中与 COleDateTime 战斗了几天。我有具有正确值的 CTime。正确的年、日、月、小时、分钟和秒。我尝试了几种将 CTime 转换为 COleDateTime 的方法:

-1.我把CTime数据放到COleDateTime的构造函数中

COleDateTime(int nYear,int nMonth,int nDay, int nHour, int nMin,int nSec );

-2。我将 CTime 格式化为 time.Format("%m/%d/%y %H:%M:%S");

并传递给 COleDateTimeParseDateTime

-3。我还尝试使用 COleDateTime

SetDateTime

之后,我得到了 1-2 分钟的错误值。或多或少。我以前从未见过它,我在互联网上什么也找不到。每个人都说会失去精度,但这是一秒钟,而不是一分钟。请给我一些建议!谢谢

最佳答案

我认为问题在于 COleDateTime 内部使用 float 进行存储,该值表示自 1899 年 12 月 30 日以来的天数。

随着天数变大,较小字段(如分钟)的精度会降低。例如, float 可以准确存储值 1000000 和 0.0000001,但不能存储 1000000.0000001。它没有足够的精度。

MSDN 文档中暗示了此限制:

This type is also used to represent date-only or time-only values. By convention, the date 0 (30 December 1899) is used for time-only values. Similarly, the time 0:00 (midnight) is used for date-only values.

所以基本上,如果您想要一个精确的时间,请将日期设置为 1899 年 12 月 30 日。

微软似乎可以设计这个类来将“天”部分存储为整数,但是嘿,那太容易了。

关于c++ - coledatetime 中的值不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16668876/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com