我有来自mysql的时间戳,比如:"2016-08-03 11:11:41.04000“。此时间戳是CONCAT('date',‘','time') select的结果。
我需要用PHP将时间戳转换为仅数字的时间戳,这样我就可以在保留毫秒精度的情况下使用javascript中的时间戳。
关于这个主题的其他问题只涉及没有MySQL毫秒片段的日期,或者简单地建议strtotime(''datestring) * 1000,这会失去毫秒精度。
毫秒精度需要保留,这样才能在javascript中使用。
发布于 2016-08-03 18:37:33
我会提出以下建议:
在JS中使用时,在PHP中打印连接字符串。您可以使用JS Date对象来设置正确的保留毫秒的时间。下面是对Date对象的引用:http://www.w3schools.com/jsref/jsref_obj_date.asp
总之
var d = new Date(year, month, day, hours, minutes, seconds, milliseconds);
让PHP在JS中填充这些参数(年、月、毫秒等
发布于 2018-10-16 08:10:19
使用这个简单的PHP代码将带有毫秒的日期从PHP格式转换为带有keep毫秒的JS时间戳格式。
将2016-08-03 11:11:41.040
转换为1470206501040
<?php
date_default_timezone_set('UTC');
$date = '2016-08-03 11:11:41.040';
$date = DateTime::createFromFormat('Y-m-d H:i:s.u', $date);
$ts_micro = (float) ($date->getTimestamp() . '.' . $date->format('u'));
$ts_mili = (float) ($ts_micro * 1000);
echo round($ts_mili); //result: 1470206501040
对于测试,您可以使用JS将1470206501040
反向转换为2016-08-03T11:11:41.040Z
时间:
var d = new Date(1470222701040);
var n = d.toISOString();
document.write(n); //result: 2016-08-03T11:11:41.040Z
发布于 2016-08-03 20:00:05
我使用了@feeela和@sietse85的建议。
在PHP中:
$datetime = new \DateTime('2016-08-03 11:11:41.04000');
$timestamp = $datetime->format('YmdHisu'); // 2016080311114104000
在javascript中:
/**
* 2016080311114104000
* @param string yyyymmddhhiissuuuuuu
*/
function dateFromCustomTimestamp(date) {
date = date.toString();
return new Date(
date.substring(0,4),
date.substring(4,6),
date.substring(6,8),
date.substring(8,10),
date.substring(10,12),
date.substring(12,14),
date.substring(14,20)/100
);
}
不是很好,但是如果解决了从mysql => php => javascript中转换保留毫秒的时间戳的问题。
https://stackoverflow.com/questions/38740204
复制相似问题