【问题标题】:How to get date (Ymd His) from JSON which formats /Date()/如何从格式为 /Date()/ 的 JSON 获取日期(Ymd His)
【发布时间】:2013-02-18 13:30:46
【问题描述】:

我正在从远程服务器调用一个以 XML 格式输出我的函数。通过用 PHP 处理它并用 JSON (json_decode) 解码它,我得到以下输出:

print_r($data); 给..

stdClass 对象 ([CreatedDate] => /Date(1360641338000-0600)/ [DateOfBirth] => /Date(1360558800000-0600)/)

如何获得CreatedDate 格式的Y-m-d H:i:s

谢谢!

【问题讨论】:

  • 为什么把xml处理成json?
  • @PLB 不要这样问。我知道我可以使用 SimpleXML,但现在我处于无法更改的位置:(
  • @MagenTools:混合 JSON 和 XML 是一个非常糟糕的主意,但是由于您已经引入了该问题并且无法解决该问题,因此您将遇到困难(取决于您需要处理的内容) .这种特定格式将要求您单独解析它(没有内置的、干净的支持这种格式)。您可以提取括号中的第一个数字并将其视为 Unix 时间戳(以毫秒为单位),然后提取第二个数字将其视为时区偏移 (+/-HHMM)。使用偏移量设置时区,并将毫秒更改为秒 - 其余的非常简单。
  • @Tadeck 同意了。这就是为什么我花了很多时间才在这里问它的原因!

标签: php json date


【解决方案1】:

JSON 没有特定的日期数据类型。您正在使用的 API 似乎正在返回一个字符串,它希望您在 JavaScript 中使用 eval

您需要处理字符串以删除Date() 部分,然后在-(也可能在+)上拆分并从另一个上减去(或添加)。然后你可以使用标准的date and time functions

【讨论】:

    【解决方案2】:

    通过参考 Rikesh 在他的评论中指出的另一个 SO 问题的解决方案来解决它。稍微修改一下以符合我的要求。我回答这个问题只是为了帮助一些沮丧的灵魂在这里找到解决方案。

    $startDate = $data->CreatedDate;
    preg_match( '/([\d]{10})/', $startDate, $matches );
    
    $sd = date( 'Y-m-d H:i:s', $matches[0] );
    $startDate = date('Y-m-d H:i:s', strtotime($sd) - 3600 * 6); //adding 6 hours to match server's time
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-01-17
      • 1970-01-01
      • 1970-01-01
      • 2014-10-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多