为了账号安全,请及时绑定邮箱和手机立即绑定

PHP:如果另一个应用程序假定的截止日期不是“1969”,如何解析两位数的年份

PHP:如果另一个应用程序假定的截止日期不是“1969”,如何解析两位数的年份

PHP
largeQ 2022-07-09 18:19:13
我们正在处理使用两位数年份存储日期值的遗留(AS/400、RPG)数据库。不久前做出的决定是“any year >= 20”是19xx…… (是的,他们现在玩得很开心,而且公司成立于 1920 年代后期,所以他们的押韵实际上是有原因的。 )我看到 PHP 使用 1969 年的截止日期,因此日期总是被假定为“1970-2069”。但是......如果我想改变它怎么办?如果我想在我的应用程序中根据具体情况进行更改怎么办?我应该如何去做这样的事情?我真的在寻找一种解决方案,它基本上会告诉 PHP 使用不同的截止日期,并且可能会改变在该日期的任一侧完成计算的方式?当然,我们知道那些旧的应用程序将不得不重新设计,并且数据库的日期值表示方式也会发生变化,但这并不像看起来那么容易。我们需要可以最大限度地减少必须物理更改的 PHP 端代码量的想法。所以,如果你过去直接处理过这样的问题,我很想听听你决定做什么。
查看完整描述

2 回答

?
慕田峪4524236

TA贡献1875条经验 获得超5个赞

我认为没有任何内置的解决方案。

您要做的就是正常解析日期,然后检查结果的年份是否在 2020 和 2069 之间。如果是,则从日期中减去 100 年,得到 1920 和 1969 之间的日期。

当然,这意味着在您将其重新格式化为使用 4 位数年份之前,您将无法在数据库中拥有任何实际在 2019 年之后的日期。这是公司应该在 20 多年前做的事情,当时每个人都在为 Y2K 危机着迷。


查看完整回答
反对 回复 2022-07-09
?
呼啦一阵风

TA贡献1802条经验 获得超6个赞

如果你不想重新编译 PHP,答案是你不能。

您可以做的是使用正则表达式,例如preg_replace_callback('~<regex here>~', function($matches) { <return modified match here> }, $str);将日期预处理为 4 个字符的年份格式,然后以规范的日期时间格式解析/存储它。


查看完整回答
反对 回复 2022-07-09
  • 2 回答
  • 0 关注
  • 111 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信