将1900年1月1日起的天数折算为今天的日期 [英] Converting days since Jan.1 1900 to today's date
本文介绍了将1900年1月1日起的天数折算为今天的日期的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
typedef struct dbdatetime
{ // Internal representation of DATETIME data type
LONG dtdays; // No of days since Jan-1-1900 (maybe negative)
ULONG dttime; // No. of 300 hundredths of a second since midnight
} DBDATETIME;
我正在尝试将此结构转换为今天的日期。我不认为时间会给我带来太多麻烦,但我在将总天数转换为正确的月和日的逻辑上遇到了问题。
前11月7日星期五是41948天。
您可以除以365.2425+1900得到当年,但如何得到正确的月/日。
C有没有内置的东西来处理这个问题?我的本行不是C程序员。
推荐答案
C标准中没有直接处理此问题的内容,但如果您愿意编写特定于操作系统的代码,或者可以导入像boost::date_time
这样的库,这是最好的选择。不要试图自己处理它,除非您同意边缘情况是错误的。日期和时间是出了名的难找。
这里是date_time
的文档,它可以对日期进行算术运算,包括"1/1/1900添加N天"。http://www.boost.org/doc/libs/1_56_0/doc/html/date_time/gregorian.html#date_time.gregorian.date_duration
date d(1900, Jan, 1)
d += days(dtdays);
编辑:OP不能使用Boost,但我将把它留在这里,以防将来的访问者使用该信息。
这篇关于将1900年1月1日起的天数折算为今天的日期的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文