繁体   English   中英

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

[英]Convert PHP date into javascript date format

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

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

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

而不是上面的日期,我需要相当于 JavaScript function

新日期()

当我 output 以上时,我得到以下信息“2012 年 6 月 1 日星期五 11:08:48 GMT+0100(格林威治标准时间夏令时)”但是,如果我将 PHP 日期格式化为相同的日期,则 JavaScript 会拒绝它。 使困惑...

谁能帮忙?

您可能应该只使用时间戳

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

然后将其转换为 Javascript 日期

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

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

这很简单。

PHP代码:

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

Javascript代码:

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

很简单,我用这个:

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

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

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

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

// JavaScript
let startTime = new Date(phpDateTimeStamp);
$newticket['DateCreated'] = date('d-m-Y G:H', strtotime($phpDateVariable));

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

这给你:

echo round(microtime(TRUE)*1000);

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

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

 var phpTimeStamp = '2022-03-20 12:20:20'; /* timestamp format*/

 var jsDateObject = new Date(Date.parse( phpTimeStamp ));

现在您可以访问日期 object 的所有属性,例如

 jsDateObject.getHours(); //  gives hour 

以及其他功能。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM