【问题标题】:Create DateTime from date string and time string从日期字符串和时间字符串创建 DateTime
【发布时间】:2016-07-11 09:01:49
【问题描述】:

我有一个同时提交日期和时间的表单,我希望根据这些值创建一个 \DateTime 对象

$submission['time'] 值类似于:'T09:45:00'

$submission['date'] 值类似于:'2016-07-11'

我试过了

var_dump(\DateTime::createFromFormat(
    'Y-m-d TH:i:s', $reportArray['date'] . ' ' . $reportArray['time'])
); // also tried without 'T' (TH:i:s)

但是,这破坏了脚本。

有没有一种简单的方法可以从一个日期字符串和一个时间字符串创建一个 \DateTime 对象?

【问题讨论】:

  • 我猜时间字符串开头的“T”是问题所在。它会改变吗?它有什么作用?
  • 我认为它表示夏令时@KIKOSoftware,实际上我认为这是不对的。
  • 是的,格式中的T 代表时区,而不是“T”。你可以试试这种格式:'Y-m-d \TH:i:s'。反斜杠将“T”转义为文字“T”。哦,你真的不需要添加空间。
  • 啊,效果很好,我会弹出我最终得到的答案@KIKOSoftware,为此欢呼。

标签: php datetime


【解决方案1】:

您在格式中使用的“T”表示时区,而不是文字“T”。您可以使用这种格式:'Y-m-d\TH:i:s'。反斜杠将“T”转义为文字“T”。我省略了空间,因为你不需要它。像这样:

var_dump(\DateTime::createFromFormat(
    'Y-m-d\TH:i:s', $reportArray['date'] . $reportArray['time'])
); 

当然,这个答案确实假设“T”始终存在并且永远不会改变。

【讨论】:

  • 这种输入不需要使用createFromFormat();这是完全有效的输入,所以只需使用new DateTime():demo
【解决方案2】:

试试这个

<?php
$d1=$submission['date']='2016-07-11';
$t1=$submission['time']='T09:45:00';
$con=$d1.$t1;
$displaytime=date('d-m-Y H:i:s A',strtotime($con));
echo $displaytime;
?>

它会给出你想要的输出,如:11-07-2016 09:45:00 AM

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-08-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多