В каком формате это время в PHP и почему я не могу его преобразовать, используя javascript? - PullRequest
1 голос
/ 02 мая 2020

Этот API, который я использую, возвращает временную метку в формате ниже. Это объясняется только как "отметка времени в UT C" в их документах. Я не могу понять, что это за формат или как его конвертировать используя javascript. Я попытался использовать новый Date (), момент. 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);

1 Ответ

2 голосов
/ 02 мая 2020

Как отмечалось в комментариях, 20200430094700 - это не отметка времени, а дата в формате YYYYMMDDHHMMSS. Чтобы преобразовать это в Date в JavaScript, вам нужно извлечь составные части (используя, например, .slice), вычесть одну из месяца, чтобы сделать ее JS месяцем (индексируется из 0), а затем передать его в 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);
...