Подтвердить что ты не робот

Как создать timestamp unix epoch format nodejs?

Я пытаюсь отправить данные в графический кэш-кеш-процесс на порт 2003, используя

1) терминал Ubuntu

echo "test.average 4 `date +%s`" | nc -q0 127.0.0.1 2003

2) NODEJS

var socket = net.createConnection(2003, "127.0.0.1", function() {
    socket.write("test.average "+assigned_tot+"\n");
    socket.end();
});

Он отлично работает, когда я отправляю данные с помощью команды окна терминала на моем ubuntu. Тем не менее, я не уверен, как отправить timestamp unix epoch format из nodejs?

Grpahite понимает метрику в этом формате metric_path значение timestamp\n

4b9b3361

Ответ 1

Нативная система JavaScript Date работает в миллисекундах в отличие от секунд, но в остальном это то же самое "время эпохи", что и в UNIX.

Вы можете округлить доли секунды и получить эпоху UNIX, выполнив следующие действия:

Math.floor(new Date() / 1000)

Ответ 2

Если вы можете, я настоятельно рекомендую использовать moment.js. Чтобы получить число миллисекунд с эпохи UNIX, сделайте

moment().valueOf()

Чтобы получить количество секунд с момента UNIX, сделайте

moment().unix()

Вы также можете конвертировать так:

moment('2015-07-12 14:59:23', 'YYYY-MM-DD HH:mm:ss').valueOf()

Я делаю это все время.

Чтобы установить moment.js на Node,

npm install moment

и использовать его

var moment = require('moment');
moment().valueOf();

ref

Ответ 3

Вспомогательные методы, которые упрощают это, скопируйте/вставьте следующее поверх JS:

Date.prototype.toUnixTime = function() { return this.getTime()/1000|0 };
Date.time = function() { return new Date().toUnixTime(); }

Теперь вы можете использовать его где угодно, просто позвонив:

// Get the current unix time: 
console.log(Date.time())

// Parse a date and get it as Unix time
console.log(new Date('Mon, 25 Dec 2010 13:30:00 GMT').toUnixTime())

Demo:

     
    Date.prototype.toUnixTime = function() { return this.getTime()/1000|0 };
    Date.time = function() { return new Date().toUnixTime(); }

    // Get the current unix time: 
    console.log("Current Time: " + Date.time())

    // Parse a date and get it as Unix time
    console.log("Custom Time (Mon, 25 Dec 2010 13:30:00 GMT): " + new Date('Mon, 25 Dec 2010 13:30:00 GMT').toUnixTime())

Ответ 5

AWS SDK включает в себя служебные функции для преобразования формата даты Amazon.

Например, при обратном вызове из объекта get S3 есть свойство LastModified в формате даты amazon. (похоже, они ничего не делают, кроме как экспортируют стандартный класс Date для своих свойств даты, таких как свойство LastModified объекта S3) Этот формат включает в себя несколько утилит для различных встроенных форматов (к сожалению, ни одна из них для эпохи Unix):

let awsTime = response.LastModified
console.log("Time Formats",{
    "String"           : awsTime.toString(),
    "JSON"             : awsTime.toJSON(),
    "UTCString"        : awsTime.toUTCString(),
    "TimeString"       : awsTime.toTimeString(),
    "DateString"       : awsTime.toDateString(),
    "ISOString"        : awsTime.toISOString(),
    "LocaleTimeString" : awsTime.toLocaleTimeString(),
    "LocaleDateString" : awsTime.toLocaleDateString(),
    "LocaleString"     : awsTime.toLocaleString()
})
/*
Time Formats {
  String: 'Fri Sep 27 2019 16:54:31 GMT-0400 (EDT)',
  JSON: '2019-09-27T20:54:31.000Z',
  UTCString: 'Fri, 27 Sep 2019 20:54:31 GMT',
  TimeString: '16:54:31 GMT-0400 (EDT)',
  DateString: 'Fri Sep 27 2019',
  ISOString: '2019-09-27T20:54:31.000Z',
  LocaleTimeString: '16:54:31',
  LocaleDateString: '2019-9-27',
  LocaleString: '2019-9-27 16:54:31'
}
*/

Однако функция утилит AWS включает в себя модуль date с другими функциями, включая метод unixTimestamp:

let awsTime = response.LastModified
let unixEpoch = Math.floor(AWS.util.date.unixTimestamp(awsTime))

Примечание. По умолчанию этот метод возвращает значение с плавающей запятой. Таким образом, Math.floor()

Код функции из aws-sdk.js (последний):

/**
 * @return [Integer] the UNIX timestamp value for the current time
 */
 unixTimestamp: function unixTimestamp(date) {
     if (date === undefined) { date = util.date.getDate(); }
     return date.getTime() / 1000;
 }

Есть также методы для rfc822 и iso8601