【问题标题】:Convert PHP date into javascript date format将 PHP 日期转换为 javascript 日期格式
【发布时间】:2012-06-05 21:53:40
【问题描述】:

我有一个输出数据数组的 PHP 脚本。然后使用json_encode() 函数将其转换为JSON。

我的问题是我的数组中有一个日期,但它的 JavaScript 格式不正确。我怎样才能在 PHP 中转换它呢?

$newticket['ThreadID'] =  $addticket;
$newticket['Subject'] =  $subject;
//$newticket['DateCreated'] =  date('d-m-Y G:H');

代替上面的日期,我需要等效的 JavaScript 函数

新日期()

当我输出上述内容时,我得到以下“Fri Jun 01 2012 11:08:48 GMT+0100 (GMT Daylight Time)”但是,如果我将 PHP 日期格式化为相同,则 JavaScript 会拒绝它。迷茫……

谁能帮忙?

【问题讨论】:

    标签: javascript php json datetime date-conversion


    【解决方案1】:

    您可能应该只使用时间戳

    $newticket['DateCreated'] = strtotime('now');
    

    然后将其转换为 Javascript 日期

    // make sure to convert from unix timestamp
    var now = new Date(dateFromPHP * 1000);
    

    【讨论】:

    • javascript 日期格式为:Fri Jun 01 2012 11:08:48 GMT+0100 (GMT Daylight Time) 不是时间戳
    • 不,有多种方法可以实例化日期对象,包括时间戳:w3schools.com/jsref/jsref_obj_date.asp
    • @LeeTee 最简单、最可移植的格式是时间戳,然后您可以将其转换为您想要的任何格式。
    【解决方案2】:

    Javascript Date 类支持 ISO 8601 日期格式,所以我建议:

    <?php 
          date('c', $yourDateTime); 
          // or for objects
          $dateTimeObject->format('c');
    ?>
    

    文档说: 格式字符 'c' 是 ISO 8601 日期(在 PHP 5 中添加)
    例如:2004-02-12T15:19:21+00:00

    更多信息: http://php.net/manual/en/function.date.php

    【讨论】:

    • 这与 Javascript new Date(); 很好的答案一起工作得很好!
    • Ecmascript 不支持完整的 ISO 8601。仅支持它的简化版本
    【解决方案3】:

    这很简单。

    PHP 代码:

    $formatted_date = $newticket['DateCreated'] =  date('Y/m/d H:i:s');
    

    Javascript 代码:

    var javascript_date = new Date("<?php echo $formatted_date; ?>");
    

    【讨论】:

      【解决方案4】:

      如果您想更精确地使用时间戳,您应该使用 microtime() 而不是 now()。

      这给了你:

      echo round(microtime(TRUE)*1000);
      

      在 php 中为毫秒,类似 javascript 的时间戳。

      【讨论】:

        【解决方案5】:

        很简单,我就用这个:

        new Date("<?= date('Y/m/d H:i:s'); ?>");
        

        【讨论】:

        • @RichardSocker &lt;?= 是 &lt;?php echo ... 的缩写
        • 谢谢伙计,对我来说是新事物,实际上我试过了,但我得到了 500 错误,可能会导致另一个错误。 :)
        【解决方案6】:

        @jeremyharris 答案的改进或简化将是这个:

        PHP 中的 DateTime 对象具有 getTimestamp() 格式,使用它并将值乘以 1000:

        <?php 
            $phpDateTimeStamp = new Date('Y/m/d H:i:s')->getTimestamp() * 1000; 
        ?>
        
        // JavaScript
        let startTime = new Date(phpDateTimeStamp);
        

        【讨论】:

        • // 在 JavaScript 中,我们必须将 php 时间戳转换为 int let startTime = new Date(parseInt(phpDateTimeStamp));
        【解决方案7】:
        $newticket['DateCreated'] = date('d-m-Y G:H', strtotime($phpDateVariable));
        

        【讨论】:

        • $phpDateVariable 已经是您上面所述的格式。我需要输入 javascript 格式,即 Fri Jun 01 2012 11:08:48 GMT+0100 (GMT Daylight Time)
        • 您只是在询问如何在 PHP 中格式化日期吗?去看看文档中的格式化选项:us.php.net/manual/en/function.date.php
        【解决方案8】:

        最可靠的方法是扩展您的日期对象以将字符串解析为您的应用程序可以使用的对象。一个解析mysql日期时间字符串的简单例子

        DateFromString(str){
         let months = ["January", "Febuary", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"];
         let date = str.split(" ")[0];
         let time = str.split(" ")[1];
        
         let [Y, M, d] = [date.split("-")[0], date.split("-")[1], date.split("-")[2]];
         let [H, m, s] = [time.split(":")[0], time.split(":")[1], time.split(":")[2]];
        
         return {
          FullYear: Y,
          Month: M - 1,
          MonthString: months[M - 1],
          Date: d,
          Time: {Hour: H, Minute: m, Second: s},
         };
        }
        

        如果您愿意,您可以包含第二个参数,该参数描述了使用默认值传递的字符串类型,并进行字符串测试以确定它是 unix 时间戳还是 javascript 时间戳或字符串,然后使用返回的对象来解析您的日期和时间,这是一个更全面的解决方案,因为它允许您构建一个动态处理多个日期说明符的接口。

        【讨论】:

          猜你喜欢
          • 2017-10-12
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-05-05
          • 1970-01-01
          • 2019-12-08
          • 2018-02-12
          • 1970-01-01
          相关资源
          最近更新 更多