这个问题是关于编写干净代码的原则以及一些关于 IT 道德的问题。是否可以使用该函数从日期时间字符串中获取日期字符串substr?
$a = '2024-03-29 19:46:00';
// На самом деле значение берется из БД, столбца формата даты-времени
// Т.е. в полученной строке $a кроме даты-времени ничего быть не может
$b = substr($a, 0, 10);
该项目的首席 PHP 开发人员反对说,在任何情况下都不可能这样写,因为 本文并不反映该行动的意图,但提出了以下选择:
$b = date('Y-m-d', strtotime($a));
// Аналогично, date, 'Y-m-d' и strtotime заменяют функции и константы для работы с временем из проекта
此言论是否公平?如果是,有哪些建议规范此准则和其他类似的代码原则?
这句话说得极其公正。首先,正如评论中已经指出的,数据库中的日期格式可能会改变:有人会说最好将日期存储为时间戳 - 自 Unix 纪元开始以来的整数秒数。就是这样,你的方法行不通。
但即使你不考虑这一点,这条线本身
根本不反映书面代码的含义。它是什么样的子串,为什么直到第十个字符?您需要编写大量注释,将“幻数”替换
10为类顶部某处的常量,等等。还有类型安全这样的东西。现代 PHP 允许您很好地处理类型。我不知道之后您将如何处理该日期,但您很可能会发现使用 获取字符串的日期
DateTime::format()并继续将对象本身存储在变量中更有用。如果您使用此数据库,您可以做的另一件事是使用 MySQL DATE 函数: