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

dtcbnfnu  于 2023-02-07  发布在  Java
关注(0)|答案(9)|浏览(131)

我有一个输出数据数组的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拒绝它。
有人能帮忙吗?

yizd12fk

yizd12fk1#

您可能只需要使用时间戳

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

然后将其转换为Javascript日期

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

laawzig22#

Javascript日期类支持ISO 8601日期格式,因此我建议:

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

文件表明:格式字符'c'是ISO 8601日期(在PHP 5中添加)
示例:2004年2月12日15:19:21 + 00:00
有关详细信息:http://php.net/manual/en/function.date.php

jdzmm42g

jdzmm42g3#

其实很简单。
PHP代码:

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

Javascript代码:

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

3pvhb19x4#

如果希望时间戳更精确,应该使用microtime()而不是now()。
这给你:

echo round(microtime(TRUE)*1000);

在php中使用类似javascript的毫秒时间戳。

vql8enpb

vql8enpb5#

很简单,我用这个:

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

iyfjxgzm6#

@jeremyharris答案的改进或简化如下:
PHP中的DateTime对象具有getTimestamp(),使用该格式并将值乘以1000:

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

// JavaScript
let phpDateTimeStamp = 'YOUR_PHP_VARIABLE';
let startTime = new Date(parseInt(phpDateTimeStamp));
qaxu7uf2

qaxu7uf27#

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

hof1towb8#

最可靠的方法是扩展date对象,将字符串解析为应用程序可以使用的对象。

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

pgvzfuti

pgvzfuti9#

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

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

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

jsDateObject.getHours(); //  gives hour

和其他功能。

相关问题