当前位置:  开发笔记 > 编程语言 > 正文

我应该使用哪种助推器来存储人类年龄

如何解决《我应该使用哪种助推器来存储人类年龄》经验,为你挑选了1个好方法。

我必须存储用户的年龄(年,月,日......可能是小时,分钟,秒).我正在使用C++和boost.

我不确定我应该使用哪类boost::posix_time(或boost::date_time).

我试过了boost::posix_time::time_duration,但这并不明显,因为没有构造函数计算一年,只有几个小时,所以我做了:

boost::posix_time::time_duration age = boost::posix_time::hours(24*365*ageInYears);

但我不确定这是一个好策略,因为所有年份都没有365天;-)

我也尝试过boost::gregorian::date,但这很棘手,因为这个版本不允许year在1400之前存储(这会存储日期,而不是持续时间).

我不想存储用户的出生日期,因为我需要在我的程序运行时存储它的年龄(医疗数据).

我不想存储常规int因为它不够准确(24岁+ 11个月差不多25岁).

我不想存储一个,float因为我不想重新发明轮子与浮动到年龄转换我将不得不做...

真的没有课程可以很容易地存储多年,并且可选择一些月份和日期来提升吗?

理想情况下,对于一个30岁半的人,我希望能够创建一个这样的对象:boost::....... theAge( 30, 6, 0 );然后:

有一个年龄的功能:theAge.years()返回30(忽略几个月)

可能有一个转换浮动,这将给我30.5作为一个年龄

John Zwinck.. 5

boost::posix_time::time_duration真的是一种正确的方法.另一种方式(我个人更喜欢)是存储出生日期和"截止日期"两者,并在需要查找该日期的年龄时减去它们.

在任何情况下,您都不需要花费数年的构造函数 - 您可以简单地从今天减去birth_date - 如果您使用date_time对象执行此操作,您将获得time_duration.



1> John Zwinck..:

boost::posix_time::time_duration真的是一种正确的方法.另一种方式(我个人更喜欢)是存储出生日期和"截止日期"两者,并在需要查找该日期的年龄时减去它们.

在任何情况下,您都不需要花费数年的构造函数 - 您可以简单地从今天减去birth_date - 如果您使用date_time对象执行此操作,您将获得time_duration.

推荐阅读
大大炮
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有