gpt4 book ai didi

c++ - 我应该使用哪个 boost 类来存储人类年龄

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:21:01 27 4
gpt4 key购买 nike

我必须存储用户的年龄(年、月、日......可能是小时、分钟、秒)。我正在使用 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 确实是正确执行此操作的一种方法。另一种方法(我个人更喜欢)是同时存储出生日期和“截至日期”,并在需要查找截至该日期的年龄时减去它们。

在任何情况下,您都不需要花费数年的构造函数——您可以简单地从今天减去 birth_date——如果您使用 date_time 对象这样做,您将得到一个 time_duration。

关于c++ - 我应该使用哪个 boost 类来存储人类年龄,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34307320/

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