【问题标题】:Create DateTime for JSON in PHP在 PHP 中为 JSON 创建 DateTime
【发布时间】:2021-04-27 05:37:15
【问题描述】:

我需要在 PHP Laravel 中使用 API 并在其中传递原始正文日期。它要求DataTime按照json的要求发送,格式如下。

"ShippingDateTime": "\/Date(1484085970000-0500)\/",

如何在 PHP/Laravel 中创建这样的日期,我可以在其中获取任何未来日期(当前日期 + 1)。目前它给出的错误是:

DateTime content '23-01-2021' does not start with '\/Date(' and end with ')\/' as required for JSON.

【问题讨论】:

  • 嗯,这不是标准的日期格式,所以你将不得不做一些手动摆弄,使它看起来像那样
  • 那是什么格式?
  • @FelippeDuarte 我也找不到那是什么格式以及如何在 PHP 中制作它。但是在示例文档中,他们显示了 \/Date(1484085970000-0500)\/ 但由于它是过去的日期,所以它也会给出错误,日期应该是未来。
  • 让这对每个人来说都是一个教训,发明自己的日期交换格式是一个非常糟糕的主意。

标签: php json laravel-5.6


【解决方案1】:

看起来你有一个以毫秒为结尾的 Unix 时间戳(000),外加一个时区标识符。您应该可以使用 date formatting flags UvO (unix time, milliseconds, timezone)

构建它

(这些是在我的时区,-06:00

echo date('UvO');
// 1611339488000-0600

// Surround it with the /Date()/ it requests
// Encode it as JSON wherever is appropriate in your code
echo json_encode('/Date(' . date('UvO') . ')/');
// "\/Date(1611339460000-0600)\/"

假设您的日期在 DateTime 对象中,请调用它们的 format() 方法来生成您想要的日期格式。

// create your DateTime as appropriate in your application
$yourdate = new \DateTime();

echo json_encode('/Date(' . $yourdate->format('UvO') . ')/');

// Set it ahead 1 day in the future
$yourdate->modify('+1 day');

【讨论】:

  • 谢谢你,它运作良好,但你能帮我如何使用它来获得下一次约会吗?就像目前它给出当前日期,但我想制作两个这样的日期,当前日期 + 1。当前日期 + 2。
  • current_date,您是指 今天 的日期,还是与您在示例中的过去日期相关的当前日期?调用 DateTime 对象的 modify() 方法可以提前 1 或 2 天更改它:stackoverflow.com/questions/14460518/…
  • 我的意思是今天的日期。我会试试你的更新答案,谢谢:)
猜你喜欢
  • 2010-11-26
  • 1970-01-01
  • 2014-05-22
  • 2017-05-23
  • 1970-01-01
  • 1970-01-01
  • 2011-05-18
  • 1970-01-01
  • 2015-07-03
相关资源
最近更新 更多