Формат даты ответа API

#javascript #datetime #google-apps-script

Вопрос:

Я использую скрипт Google Apps, отправляющий запрос API для получения даты. Дата, однако, возвращается в виде числа в научной нотации (1.635218706E9), которое, как я предполагаю, находится в формате миллисекунд с 1970 года. После преобразования его из научной нотации в обычное число (1635218706) создайте новую дату javascript с неправильной датой и годом. Это должно быть 25 октября 2021 года, но вместо этого дается 31 декабря 1969 года.

Я что-то упускаю при создании новой даты по номеру? И есть ли способ, чтобы API просто отвечал более читаемой датой вместо миллисекунд с 1970 года?

Комментарии:

1. О is there a way just have the API respond with a more readable date instead of milliseconds from 1970? том , можете ли вы предоставить подробную информацию об используемом вами API? А также, можете ли вы предоставить свой сценарий?

2. Значение, по-видимому, составляет секунды, а не миллисекунды, поэтому измените показатель с 9 на 12 или умножьте на 1000 (1e3): new Date(1.635218706E9 * 1e3).toISOString() получится «2021-10-26T03:25:06.000 Z». Умножение также приведет к тому, что строка будет пронумерована, так new Date('1.635218706E9' * 1e3).toISOString() что это тоже работает. 🙂

3. Похоже, это все исправило. Не учел, что, возможно, это было в секундах, а не в миллисекундах. Спасибо!

Ответ №1:

На всякий случай. Я обнаружил, что если вы умножите это число на 1000 и передадите его объекту данных, вы сможете получить что-то немного более разумное:

 var seconds = 1.635218706E9;
var date = new Date(seconds*1000);
console.log(date); // output: 2021-10-26T03:25:06.000Z

var date_str = [date.getFullYear(), date.getMonth() 1, date.getDate()].join('/')
console.log(date_str); // output: 2021/10/26 

Похоже, что API дает вам секунды.

Ответ №2:

вы можете использовать toLocaleString / toLocaleDateString

итак, код выглядит следующим образом

 const dates = new Date()
const fullDates = dates.toLocaleString('en-US')
 

вы можете прочитать в документации здесь :
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toLocaleString