将PHP日期转换为javascript日期格式

时间:2012-05-31 15:51:23

标签: javascript php json datetime date-conversion

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

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

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

而不是上述日期,我需要等效的javascript函数

  

新日期()

当我输出上述内容时,我得到以下“2012年6月1日星期五11:08:48 GMT + 0100(GMT日光时间)”但是,如果我将我的PHP日期格式化为相同,则javascript拒绝它。困惑...

有人可以帮忙吗?

8 个答案:

答案 0 :(得分:28)

您应该只使用时间戳

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

然后将其转换为Javascript日期

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

答案 1 :(得分:7)

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

答案 2 :(得分:5)

这很简单。

PHP代码:

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

Javascript代码:

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

答案 3 :(得分:1)

很简单,我用这个:

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

答案 4 :(得分:1)

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

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

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

// JavaScript
let startTime = new Date(phpDateTimeStamp);

答案 5 :(得分:0)

$newticket['DateCreated'] = date('d-m-Y G:H', strtotime($phpDateVariable));

答案 6 :(得分:0)

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

这会给你:

echo round(microtime(TRUE)*1000);

对于php中的一个类似javascript的时间戳。

答案 7 :(得分:0)

最可靠的方法是扩展日期对象以将字符串解析为应用程序可以使用的对象。解析mysql datetime字符串的快速示例

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时间戳还是字符串,然后使用返回的对象以解析您的日期和时间,这是一个更全面的解决方案,因为它将允许您构建一个可动态处理多个日期说明符的接口。