perl – 计算日期的年数增量

perl – 计算日期的年数增量,第1张

概述我试图找出一种方法来计算记录的出生年份,在给定日期给出两位小数的年龄 – 在Perl中. 为了说明这个例子,考虑以下两个记录: date, age at date25 Nov 2005, 74.2321 Jan 2007, 75.38 我想要做的是根据这些记录获得出生年份 – 从理论上讲,它应该是一致的.问题在于,当我尝试通过计算日期字段中年份与年龄之间的差异来推导它时,我遇到了舍入错误,导致 我试图找出一种方法来计算记录的出生年份,在给定日期给出两位小数的年龄 – 在Perl中.

为了说明这个例子,考虑以下两个记录:

date,age at date25 Nov 2005,74.2321 Jan 2007,75.38

我想要做的是根据这些记录获得出生年份 – 从理论上讲,它应该是一致的.问题在于,当我尝试通过计算日期字段中年份与年龄之间的差异来推导它时,我遇到了舍入错误,导致结果看起来错误,而实际上它们是正确的.

我尝试使用int()或sprintf()的一些“聪明”组合来解决问题,但无济于事.我看过Date :: Calc但是看不到我能用的东西.

附:由于许多日期是在1970年之前,我不能不幸地使用UNIX纪元.

解决方法 Perl的gmtime和localtime函数在1970年之前处理负输入和日期没有问题.

use Time::Local;$time = timegm(0,25,11-1,2005-1900);          # 25 Nov 2005$birthtime = $time - (365.25 * 86400) * 74.23;    # ~74.23 yearsprint scalar gmtime($birthtime);                  # ==> Wed Sep 2 11:49:12 1931

实际的出生日期可能会有几天不同,因为一年中只有一百分之一只会给你3-4天的分辨率.

总结

以上是内存溢出为你收集整理的perl – 计算日期的年数增量全部内容,希望文章能够帮你解决perl – 计算日期的年数增量所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1222641.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-05
下一篇 2022-06-05

发表评论

登录后才能评论

评论列表(0条)

保存