【问题标题】:PHP DATE/TIME Automatically inserting timezone/need to add characterPHP DATE/TIME 自动插入时区/需要添加字符
【发布时间】:2014-02-04 00:00:12
【问题描述】:

这是我试图返回当前日期/时间的一段代码。

<?php
date_default_timezone_set('America/Chicago');
$now = date('Y-m-dTH:i:s.00+00:00');
echo $now;
?>

如您所见,我在末尾添加了一些字符,并在日期和小时之间添加了一个“T”。这是为了匹配我必须遵循的非常具体的格式,因为这个日期将直接传输到需要这种非常具体格式的数据的网络服务:

2014-01-31T15:05:29.04+00:00

如您所见,此示例中的“T”代表时间。我同意,Web 服务开发人员的错误选择,但这无法更改。

问题是,当 PHP 读取我的示例代码时,它会在我的大写“T”处插入 CST(时区),从而导致问题,因为它破坏了我试图实现的格式:

2014-02-03CST17:53:16.00+00:00

我需要能够在没有 PHP 函数将其转换为时区的情况下插入 T。

有什么想法吗?

【问题讨论】:

  • \T转义T
  • 如果您希望使用固定的+00:00 时区偏移量(或将时区设置为UTC),请不要忘记使用函数gmdate() 而不是date()
  • “T”并不是一个坏选择。这是ISO-8601 标准中的一个关键元素。 Web 服务只是使用带偏移量的 ISO8601 扩展格式。这是RFC3339 允许的,并被许多 其他规范使用。习惯就好。

标签: php date time timezone format


【解决方案1】:

如前所述,如果您想插入文字字符,请检查它是否是您可以在PHP documentation 中找到的格式的修饰符。如果是这样,请转义它。

所以你基本上只需要改变:

$now = date('Y-m-dTH:i:s.00+00:00');

到:

$now = date('Y-m-d\TH:i:s.00+00:00');

【讨论】:

    猜你喜欢
    • 2017-05-17
    • 1970-01-01
    • 2013-05-12
    • 2019-09-27
    • 1970-01-01
    • 2012-09-05
    • 2011-04-16
    • 2017-03-17
    • 1970-01-01
    相关资源
    最近更新 更多