【问题标题】:PHP convert multiple array-values to time format [duplicate]PHP将多个数组值转换为时间格式[重复]
【发布时间】:2019-06-25 01:55:12
【问题描述】:

对于一个项目,我需要将多个值从一个数组转换为 PHP 中的时间格式。我有这样的数组:
starttime = ['year' => 2019, 'month' => 5, 'day' => 10, 'hour' => 20, 'minute' => 15]
有没有办法将这些值转换为我也可以计算的时间格式?我已经尝试过使用 strtotime,但它不起作用。
感谢您的回答!

【问题讨论】:

标签: php arrays time time-format


【解决方案1】:

我建议使用具有setDatesetTimegetTimestamp 方法的DateTime 对象。您可以使用它从数组键中定义日期和时间,并检索 unix 时间戳作为结果。

示例:https://3v4l.org/o3lVr

$starttime = ['year' => 2019, 'month' => 5, 'day' => 10, 'hour' => 20, 'minute' => 15];
$date = new \DateTime();
$date->setDate($starttime['year'], $starttime['month'], $starttime['day']);
$date->setTime($starttime['hour'], $starttime['minute']);

var_dump($timestamp = $date->getTimestamp());
var_dump(date('Y-m-d H:i:s', $timestamp));

结果:

int(1557512100)
string(19) "2019-05-10 20:15:00"

为了防止缺少键的问题,在 PHP >= 7.0 中,您可以使用 null coalesce operator ?? 将值默认为当前日期。

示例:https://3v4l.org/0MOI5

$starttime = ['month' => 5, 'day' => 10, 'minute' => 15];

$date = new \DateTime();
$date->setDate($starttime['year'] ?? $date->format('Y'), $starttime['month'] ?? $date->format('m'), $starttime['day'] ?? $date->format('d'));
$date->setTime($starttime['hour'] ?? $date->format('H'), $starttime['minute'] ?? $date->format('i'));

var_dump($timestamp = $date->getTimestamp());
var_dump(date('Y-m-d H:i:s', $timestamp)); 

结果:

int(1557497700)
string(19) "2019-05-10 16:15:00"

或者,您也可以使用mktime 来产生相同的结果。请注意,根据手册,在 PHP DST,此方法可能会产生意外(但并非不正确)结果。

示例:https://3v4l.org/DU0Q1

$starttime = ['year' => 2019, 'month' => 5, 'day' => 10, 'hour' => 20, 'minute' => 15];

$timestamp = mktime(
    $starttime['hour'], 
    $starttime['minute'], 
    0, 
    $starttime['month'], 
    $starttime['day'], 
    $starttime['year']
);

var_dump($timestamp);
var_dump(date('Y-m-d H:i:s', $timestamp)); 

结果:

int(1557512100)
string(19) "2019-05-10 20:15:00"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-04
    • 2018-10-06
    • 2014-01-29
    • 2012-07-04
    • 2023-04-09
    • 1970-01-01
    相关资源
    最近更新 更多