【问题标题】:PHP Convert to YouTube Time Format (ISO 8601)PHP 转换为 YouTube 时间格式 (ISO 8601)
【发布时间】:2016-01-23 19:15:03
【问题描述】:

我想要的时间格式是2016-01-19T06:22:00.000Z(YYYY-MM-DDThh:mm:ss.sssZ);但是,我得到了这种格式:2016-01-19T06:22:00+01:00

这是我的代码:

$before = "2016-01-19 06:22:00";
$after = date('c', strtotime($before));

echo "Before: $before\n";
echo "After: $after";

这是fiddle

【问题讨论】:

  • @CBroe,谢谢,但$after = (new DateTime($before))->format(DateTime::ISO8601); 产生2016-01-19T06:22:00+0100。我需要它的格式与2016-01-19T06:22:00.000Z 完全一样,因为 YouTube 不接受我的其他格式。
  • 那么您可以轻松地自己创建它,方法是将其他格式字符代表的各个日期部分按正确的顺序放在一起。
  • 谢谢,@CBroe。 $after = str_replace('+', '.', (new DateTime($before))->format(DateTime::ISO8601))."Z"; 有效,但并不优雅。然而,米海的回答完美而优雅。

标签: php date datetime datetime-format iso8601


【解决方案1】:

你的意思是这样的:

$before = "2016-01-19 06:22:00";
$format = 'Y-m-d\TH:i:s.uO';
$after = date($format, strtotime($before));

echo "Before: $before<br/>";
echo "After: $after";

【讨论】:

  • 谢谢。这比我最初使用的更接近,但仍然返回2016-01-19T06:22:00.000000+0100。我一直在寻找类似 Mihai 的答案。
【解决方案2】:
$before = "2016-01-19 06:22:00";
$after = (new DateTime($before))->format('Y-m-d\TH:i:s.s\Z');

echo "Before: $before\n";
echo "After: $after";

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-11-16
    • 2020-11-23
    • 1970-01-01
    • 2022-10-15
    • 1970-01-01
    • 2019-01-04
    • 1970-01-01
    相关资源
    最近更新 更多