Как создать 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
Ответы
Ответ 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())
Ответ 4
var timeInMs = Date.now();
A Число, представляющее миллисекунды, прошедшие с эпохи UNIX.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/now
Ответ 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