我需要存储用户的年龄(以年、月、日……甚至小时、分钟和秒为单位)。我正在使用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
,但这很棘手,因为它不允许存储1400年之前的year
(而这只存储日期,而不是持续时间)。
- 我不想存储用户的出生日期,因为我需要在程序运行时存储其年龄(医疗数据)。
- 我不想存储普通的
int
,因为它不够精确(24岁+11个月几乎是25岁)。 - 我不想存储
float
,因为我不想重新发明轮子,需要进行浮点数转换...
在 boost 中真的没有使存储一定数量的年份、可选的月份和天数变得容易的类吗?
理想情况下,对于一个30岁半的人,我想创建这样一个对象:boost::....... theAge( 30, 6, 0 );
然后:
- 有一个函数可以获取年龄:theAge.years() 返回30(忽略月份)
- 可能有一个转换为
float
的功能,将给我30.5作为年龄
boost::posix_time::time_duration
的差值(当前时间 - 出生日期)。我认为对于医疗程序来说,1400 不是真正的限制。 - n. m.