date.valueOf () JavaScript 与 PHP 等价的方法

Equivalent of method date.valueOf () JavaScript with PHP

我在 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 不同。

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

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 中的 "same" 的操作方法:

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