我们正在处理使用两位数年份存储日期值的遗留(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 危机着迷。
呼啦一阵风
TA贡献1802条经验 获得超6个赞
如果你不想重新编译 PHP,答案是你不能。
您可以做的是使用正则表达式,例如preg_replace_callback('~<regex here>~', function($matches) { <return modified match here> }, $str);
将日期预处理为 4 个字符的年份格式,然后以规范的日期时间格式解析/存储它。
- 2 回答
- 0 关注
- 111 浏览
添加回答
举报
0/150
提交
取消