【问题标题】:Replace strings like new Date(1358467200000) with a valid date用有效日期替换像 new Date(1358467200000) 这样的字符串
【发布时间】:2013-02-16 19:31:11
【问题描述】:

我正在使用 PHP 制作一个 jsonp 版本的 json 文件,我注意到作者在 json 文件中放入了类似这样的内容,而不是有效日期:

"StartPublish" : new Date(1356652800000)

我需要使用 PHP 将所有出现的 new Date(<i>timestamp</i>) 替换为表示为有效日期格式的时间戳,例如 <i>Fri Dec 28 2012 01:00:00 GMT+0100 (CET)</i>

非常感谢!!!

【问题讨论】:

  • 使用 JS 应该更容易,它可以原生地 evaluate 对象文字和 new Date 表达式。任何 JSON 解析器都会拒绝该语法。
  • 您真的想要依赖时区的日期字符串吗?为什么不直接转换成整数?
  • 你当然可以只输出时间戳。 JS 会很乐意接受这一点(如您已经获得的代码所示)
  • 时间戳是常规日期。你想要的是一个日期的代表。为什么不让 JS 做呢?

标签: php regex json


【解决方案1】:

现在不要谈论您的 JSON 内容。试试preg_replace_callback

$jsonPost = preg_replace_callback('/:\s*new\s+Date\(([0-9]+)\)/', function($match) {
    return ': "'. date('r', $match[1] / 1000). '"';
}, $jsonPre);

日期可以按照http://php.net/manual/en/function.date.php格式化

【讨论】:

    【解决方案2】:

    我正在制作 jsonp 版本的 json 文件

    那么你没有任何问题。您当前拥有的格式可能不是有效的 JSON,但将其包装在回调函数中将创建一个有效的 JSONP 脚本,其中包含对象文字和 Date 调用 - 无需转换。只是

    echo $_GET["callback"] . "($nearlyJSON);";
    

    【讨论】:

      【解决方案3】:
       echo  date("d/m/Y h:i:s",strtotime($strtime));
      

      【讨论】:

        猜你喜欢
        • 2020-03-24
        • 2021-03-28
        • 2014-01-21
        • 2016-10-28
        • 1970-01-01
        • 1970-01-01
        • 2021-01-17
        • 2021-12-28
        • 2019-05-08
        相关资源
        最近更新 更多