php - PHP将多个数组值转换为时间格式
问题描述
对于一个项目,我需要将多个值从一个数组转换为 PHP 中的时间格式。我有这样的数组:
starttime = ['year' => 2019, 'month' => 5, 'day' => 10, 'hour' => 20, 'minute' => 15]
有没有办法将这些值转换为时间格式,我也可以用它来计算东西?我已经尝试过使用 strtotime,但它不起作用。
感谢您的回答!
解决方案
我建议使用DateTime
具有setDate
,setTime
和getTimestamp
方法的对象。您可以使用它从数组键中定义日期和时间,并检索 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 中,您可以使用空合并运算符??
将值默认为当前日期。
$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 < 5.1.0 中,如果DST
未指定,此方法可能会产生意外(但并非不正确)的结果。
$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"
推荐阅读
- java - Java invoke class to call method inside
- javascript - 将对象的数组属性作为 React 组件 prop 传递会引发异常
- css - css 过渡不适用于渐变?
- javascript - 在 node.js 的命令行中传递参数
- angular - ASP.NET Webapi 中 HTTP 的 Cors 错误,但不是 HTTPS
- sql - T-SQL 在合并中选择所有要更新的 col
- nlp - 从 nlp 中的给定单词生成语句
- css - 原始 css 中的 3d 几何混淆
- .net-core - 在 Amazon SQS 传输上发布的 NServiceBus 路由器事件不由 Azure 服务总线传输端点处理
- php - 运行sails artisan migrate 出错