Получить текущую метку времени в NodeJS в формате DD-MM-YY-23: 59: 42 - PullRequest
1 голос
/ 22 июня 2019

Я запускаю NodeJS 8 в AWS Lambda и хочу поставить метку времени и присоединить к S3 текущий день, месяц, год и текущее время при запуске функции.

Так что, если бы моя функция работала сейчас, она вывела бы 220619-183923 (сегодняшняя дата, 6,39 вечера и 23 секунды вечером.)

Для чего-то такого сложного мне нужно что-то вроде MomentJS или это можно сделать в чистом Javascript?

В конечном итоге это составит URL S3, такой как https://s3.eu-west-2.amazonaws.com/mybucket.co.uk/BN-220619-183923.pdf

UPDATE Похоже, что в веб-крюке есть некоторые данные даты / времени, хотя и в несколько разных форматах, которые не выводились в функции Lambda, поэтому они могут оказаться здесь полезными. Можно ли использовать «:» в URL-адресе и можно ли преобразовать UTC, которое, как я полагаю, в миллисекундах, в желаемый формат?

createdDatetime=2019-06-22T18%3A20%3A42%2B00%3A00&
date=1561231242&
date_utc=1561227642&

Странно, значение date_utc, которое на самом деле является реальными данными. Кажется, выходит здесь как 1970? https://currentmillis.com/

Ответы [ 3 ]

1 голос
/ 22 июня 2019

Вам не нужен момент. Я включил решение, которое довольно многословно, но понятно. Это может быть сокращено, если это необходимо.

Поскольку вы используете S3, вы также можете рассмотреть возможность использования версий UTC для каждой функции даты (т. Е. .getMonth() становится .getUTCMonth())

Отрегулируйте при необходимости:

createdDatetime= new Date(decodeURIComponent('2019-06-22T18%3A20%3A42%2B00%3A00'))
date=new Date(1561231242 * 1000);
date_utc=new Date(1561227642 * 1000);

console.log(createdDatetime, date, date_utc)

const theDate = createdDatetime;
const day = theDate.getUTCDate();
const month = theDate.getUTCMonth()+1;
const twoDigitMonth = month<10? "0" + month: month;
const twoDigitYear = theDate.getUTCFullYear().toString().substr(2)
const hours = theDate.getUTCHours();
const mins = theDate.getUTCMinutes();
const seconds = theDate.getUTCSeconds();
const formattedDate = `${day}${twoDigitMonth}${twoDigitYear}-${hours}${mins}${seconds}`;

console.log(formattedDate);

ОБНОВЛЕНИЕ, основанное на вашем обновлении: код здесь работает до тех пор, пока вход является объектом JavaScript Date. Все параметры запроса, которые вы указали, могут использоваться для создания объекта Date.

0 голосов
/ 22 июня 2019

Какова цель создания этой строки даты?Если вам просто нужна его как удобочитаемая временная метка, для запуска этого будет достаточно:

new Date().toISOString()

Это дает вам время UTC на сервере.Если вам нужно время, чтобы всегда быть в определенном часовом поясе, вы можете использовать момент.

0 голосов
/ 22 июня 2019

Вы можете определенно использовать MomentJS для достижения этой цели. Если вы хотите избежать использования большого пакета, я использую эту служебную функцию, чтобы получить читаемый формат, посмотрите, поможет ли это

https://gist.github.com/tstreamDOTh/b8b741853cc549f83e72572886f84479

...