将1900年1月1日起的天数折算为今天的日期 [英] Converting days since Jan.1 1900 to today's date

查看:11
本文介绍了将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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆