使用PHP的方法date.valueOf()JavaScript的等效方法

时间:2017-08-30 13:57:47

标签: php date time timestamp strtotime

我在JavaScript中有这个脚本:

var dt = new Date();
var intDt = dt.valueOf();
console.log(intDt); // 1504100049524

我想将其转换为PHP,但令我惊讶的是结果并不相同。 这是我的PHP脚本:

$dt = date(DATE_RFC2822);
$intDt = strtotime($dt);
echo($intDt); //1504100049

我需要这个来计算月相,分数和角度。

月亮的阶段,分数和角度的微积分在我的js脚本中运行良好。但是由于这个原因,我的PHP结果与JavaScript不同。

2 个答案:

答案 0 :(得分:0)

PHP的时间函数返回自unix时代以来的秒数,而不是像JS那样的毫秒数。您需要将JS时间除以1000并丢弃余数或将PHP时间乘以1000. microtime可以使用第二个参数设置为true,但它只能检索当前时间。

答案 1 :(得分:0)

PHP的getTimestamp()将为您提供UNIX时间戳,即自1970年1月1日以来的

此处有更多信息:Unix Time

JavaScript valueOf()将为您提供自同一日期以来的毫秒

更多内容:Date​.prototype​.valueOf()

请牢记这些,这是javascript的一个片段:

var jsdt = new Date('2018-08-18')
undefined
jsdt.valueOf()
1534550400000

这是在PHP中执行“相同”操作的方法:

$external = "08/18/2018 00:00:00";
$format = "m/d/Y H:i:s";
$dateobj = DateTime::createFromFormat($format, $external);
echo $dateobj->getTimestamp()*1000; // 1534550400000