【问题标题】:PHP date ISO 8601 date TimezonePHP 日期 ISO 8601 日期 时区
【发布时间】:2015-05-22 07:28:25
【问题描述】:
我从支付网关返回了这个日期
2014-05-15T08:40:52+01:00
我得到了 2014-05-15T08:40:52 但我无法识别时区的含义+01:00
我所在的时区是 UTC−06:00 (CT)
服务器所在时区为 UTC-02:00
我的支付网关时区 UTC-05:00 (EST)
将+01:00 添加/未添加到我的时区后的含义是什么?我如何告诉我的网站用户他/她在 XX 日期和时间成功完成了付款流程...
【问题讨论】:
标签:
php
mysql
date
datetime
【解决方案1】:
ISO 8601 Specs
格式如下。此处显示的组件必须是
现在,正是这个标点符号。注意出现“T”
从字面上看,在字符串中,表示时间的开始
元素,如 ISO 8601 中所述。
Year:
YYYY (eg 1997)
Year and month:
YYYY-MM (eg 1997-07)
Complete date:
YYYY-MM-DD (eg 1997-07-16)
Complete date plus hours and minutes:
YYYY-MM-DDThh:mmTZD (eg 1997-07-16T19:20+01:00)
Complete date plus hours, minutes and seconds:
YYYY-MM-DDThh:mm:ssTZD (eg 1997-07-16T19:20:30+01:00)
Complete date plus hours, minutes, seconds and a decimal fraction of a second
YYYY-MM-DDThh:mm:ss.sTZD (eg 1997-07-16T19:20:30.45+01:00)
地点:
YYYY = four-digit year
MM = two-digit month (01=January, etc.)
DD = two-digit day of month (01 through 31)
hh = two digits of hour (00 through 23) (am/pm NOT allowed)
mm = two digits of minute (00 through 59)
ss = two digits of second (00 through 59)
s = one or more digits representing a decimal fraction of a second
TZD = time zone designator (Z or +hh:mm or -hh:mm)
此配置文件定义了两种处理时区偏移的方法:
1.时间以 UTC(协调世界时)表示,带有一个特殊的 UTC 指示符(“Z”)。
2.时间以本地时间表示,时区偏移以小时和分钟表示。
“+hh:mm”的时区偏移表示
日期/时间使用本地时区,即“hh”小时和“mm”
比 UTC 早几分钟。
“-hh:mm”的时区偏移表示
日期/时间使用本地时区,即“hh”小时和“mm”
比 UTC 晚几分钟。
本节回答您的问题
“+hh:mm”的时区偏移表示日期/时间使用的本地时区比 UTC 早“hh”小时和“mm”分钟。
TL;DR
您看到的日期在 UTC 前 1 小时的时区中,无论您的服务器是什么时间,支付网关是什么时间。它确实返回的时间比世界任何地方和任何时区的 UTC 早 1 小时。