以下代码是否有更短的 Datetime 结构?
Is there a shorter Datetime construct for the following code?
目前我正在使用这样的片段:
if (is_numeric($date)) {
$datetime = new DateTime('@'.$date);
} else {
$datetime = new DateTime($date);
}
其中 $date
是 unixtimestamp
或某些日期字符串,例如 2016/03/03
.
此构造的最佳故障安全等效项是什么?
也许是单线的?包装器 class ?
我问的是一些较短的结构,因为我们在系统的许多地方都使用了上述结构。所以我想用更具可读性和故障安全性的东西替换它。
您可以在 php 中使用 ternary operator 将 4
行缩短为一行,如下所示:
$datetime = new DateTime((is_numeric($date) ? '@' : '') . $date);
如果您想要在您的项目中重复使用某些东西,请将其包装在您自己的 class 中,例如
class AcmeDateTime extends \DateTime
{
public function __construct($time = "now", DateTimeZone $timezone = null)
{
$time = is_numeric($time) ? "@" . $time : $time;
parent::__construct($time, $timezone);
}
}
目前我正在使用这样的片段:
if (is_numeric($date)) {
$datetime = new DateTime('@'.$date);
} else {
$datetime = new DateTime($date);
}
其中 $date
是 unixtimestamp
或某些日期字符串,例如 2016/03/03
.
此构造的最佳故障安全等效项是什么?
也许是单线的?包装器 class ?
我问的是一些较短的结构,因为我们在系统的许多地方都使用了上述结构。所以我想用更具可读性和故障安全性的东西替换它。
您可以在 php 中使用 ternary operator 将 4
行缩短为一行,如下所示:
$datetime = new DateTime((is_numeric($date) ? '@' : '') . $date);
如果您想要在您的项目中重复使用某些东西,请将其包装在您自己的 class 中,例如
class AcmeDateTime extends \DateTime
{
public function __construct($time = "now", DateTimeZone $timezone = null)
{
$time = is_numeric($time) ? "@" . $time : $time;
parent::__construct($time, $timezone);
}
}