PHP 中的时间戳是什么格式,为什么我不能使用 javascript 转换它?

What format timestamp is this in PHP and why can't i convert it using javascript?

这个 API 我正在使用 returns 以下格式的时间戳。在他们的文档中只解释为 "timestamp in UTC" 。我不知道这是什么格式,或者如何使用 javascript 转换它。我尝试过使用 new Date()、moment.js 以及介于两者之间的所有内容。谁能解释如何在 JS 而不是 PHP 中执行此操作?

// timestamp from api
20200430094700

使用 Javascript,我总是得到一些像这样的东西:

Friday, February 16, 2610 6:34:54.700 AM

这里我将使用PHP将其转换为正确的unix时间戳和日期对象

$timestamp = 20200430094700;

$e = new DateTime($timestamp);

// This is the correct Unix timestamp
// 1588258020
echo date_timestamp_get($e);        

// This is the correct date
// [date] => 2020-04-30 09:47:00.000000
print_r($e);

正如评论中指出的那样,20200430094700 不是时间戳,而是 YYYYMMDDHHMMSS 格式的日期。要将其转换为 JavaScript 中的 Date,您需要提取组件部分(使用例如 .slice), subtract one from the month to make it a JS month (indexed from 0) and then pass that into Date.UTC 并在 Date 构造函数中使用其输出:

const ts = '20200430094700';

const d = new Date(Date.UTC(ts.slice(0,4), ts.slice(4,6)-1, ts.slice(6,8), ts.slice(8,10), ts.slice(10,12), ts.slice(12,14)));
console.log(d);