【问题标题】:PHP Date and Time Format for an API request to Linnworks对 Linnworks 的 API 请求的 PHP 日期和时间格式
【发布时间】:2018-03-20 20:21:09
【问题描述】:

在 Linnworks API 文档中,其中一个 API 请求需要开始和结束日期。其格式如下;

 2018-02-19T16:57:07.0049771+00:00

我不确定这种格式。这是某种默认格式还是我需要构建它?

如果我需要构建,我会得到明显的部分;

日期;

2018-02-19

时间;

T16:57:07

但这部分是什么我不知道;

0049771+00:00

是 Unix 时间戳和时区的 + 吗?

【问题讨论】:

  • 微秒,u 修饰符。
  • 来自Date documentation:+00:00 与格林威治时间 (GMT) 的差异,小时和分钟之间带有冒号(P 格式)。另请参阅DATE_RFC3339_EXTENDED
  • 0049771 是 7 位数字,所以这将是分毫秒而不是微秒。 (我假设这是一个错字,应该是 6 位数字,所以是微秒)
  • 我仍然需要为 now() 和 from 日期构建它。因此,而不是一个词的假设,以及对 php 网站的引用(我已经搜索过),也许你可以扩展你的答案?

标签: php date time unix-timestamp


【解决方案1】:

结束部分是微秒和时区。

如果您使用 date("c") 或 $yourDateObject->format("c") 它应该会以这种格式 (ISO 8601) 为您提供一个完整的字符串。

【讨论】:

  • 太简单了,我知道它会是这样,现在我现在叫它什么,更容易找到文档。谢谢。
  • 谈到很快,引用的 ISO8601 和 DATE_RFC3339_EXTENDED 都错过了我在示例输出中引用的 7 位数字。
【解决方案2】:

这是ISO8601 格式,其中声明:

小数部分可以添加到三个时间元素中的任何一个。 但是,分数只能添加到最低阶时间元素 在表示中。

考虑到此处使用“可能”一词,我希望 API 应允许您指定没有任何此类小数部分的时间戳,前提是您的应用程序可以接受。 (免责声明——这是一个猜测。)

如果是这样,这可以简单地通过:

echo date('c');

产量:

2018-03-20T16:24:37-04:00

【讨论】:

  • 太简单了,我知道它会是这样,现在我现在叫它什么,更容易找到文档。谢谢。
  • 谈到很快,引用的 ISO8601 和 DATE_RFC3339_EXTENDED 都错过了我在示例输出中引用的 7 位数字。
  • 是的,并且一直在阅读和双重参考,并再次使用谷歌搜索和阅读 php 网站,因为它已发布。
  • "2018-02-19T16:57:06.0303122+00:00" 是必需的格式。
  • 我知道供应商文档是这么说的,但 ISO 规范说微秒是可选的。因此,如果供应商已经实现了符合规范的日期解析器,那么您应该能够省略微秒。只需点击一次 API 即可对其进行测试。
【解决方案3】:

格式化字符u(微秒) 将返回 6 字符长字符串 (在 php000000)

如果您需要 7 个字符的长字符串,只需在末尾添加 0,如下所示:

$dt = new DateTime();
echo $dt->format('Y-m-d\TH:i:s.u0P');

它将输出如下内容:2018-03-21T08:47:01.0263140+01:00

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-02-21
    • 2013-10-05
    • 1970-01-01
    • 2014-03-02
    • 2016-05-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多