简述:原作者编写的代码可能存在缺陷。
该代码从我们的提供商接收支付事件,并以 'o-m-d H:i:s'
格式将其记录到数据库中。
这看起来一切顺利,但是 %o
修饰符会在 ISO-8601 周“属于”另一年时给出不同的年份。[参考]
例如,我们有记录为2013-12-31的付款,在正常/非疯狂日期下应为2012-12-31。因此,我们看到的时候似乎发生了未来的付款,有时还发生在过去。
真正的问题在于我无法在 PHP 或 MySQL 中找到任何日期解析函数来解释 %o
标志,从而无法重新格式化这些日期为合理的格式。
是否有人知道如何正确解析这些日期?
o-m-d
将给出形式正确的2013-12-31
。但您混合使用了ISO 8601格式化程序和“标准”格式化程序。为什么不使用c
作为ISO 8601的完整格式,或者只使用Y-m-d
,这将给出2012-12-31
? - Axel Amthoro-m-d
格式在这个代码中到处都是,已经有成千上万个使用此格式编写的数据库记录需要我处理。即使我可以只是“更改代码”,我仍然需要能够从o-m-d
读取和重新编写日期到Y-m-d
,而 PHP 没有一个可以读取它的功能。这就是这个问题的全部意义。 - Sammitch