从 nodejs 中的 TZDATA 获取时区代码
Getting TimeZone code from TZDATA in nodejs
我正在创建 logger.js 来制作一些干净的日志。但是,我正在努力以预期的格式获取时区。我有 process.env.TZ
(Unix TZDATA) 的 Continent/Zone 格式,但希望它的格式为 000x
这是我目前拥有的:
/**
* Just. Clean. Logs.
* Usage:
* const logger = new Logger('mymodule');
* logger.log('info', 'This is a log message');
* @summary LOGS!
* @param {string} stat - Application or module the log data is coming from
*/
class Logger {
constructor(stat){
this.stat = stat.toUpperCase();
}
/**
* @summary Log to console
* @param {string} level - Log level i.e WARN, INFO, DEBUG, ERROR etc.
* @param {string} message - Log message
*/
log(level, message){
const d = new Date(Date.now());
const timestamp = `${d.getFullYear()}-${d.getMonth()+1}-${d.getDate()}:${d.getHours()}:${d.getMinutes()}:${d.getSeconds()}.${process.env.TZ}`;
console.log(`${timestamp} ${level.toUpperCase()}:${this.stat}:${message}`);
}
}
module.exports = Logger;
如果答案是创建一个排序数组并手动分配代码,我在哪里可以找到此类数据的综合列表?我设法找到了一些代码,但不确定它们是否是我要找的。
不幸的是,d.getTimezoneOffset()
和 process.env.TZ
都不了解夏令时,因此对于 off-the-shelf javascript.
的问题没有简单的解决方案
在 javascript 中有一些 third-party 处理时区和 DST 的库可能会对您有所帮助。无耻插件:我自己的 tzdata-javascript.org
就是其中之一。
也就是说,我强烈建议您在日志中使用 UTC 时间戳。它使得比较来自可能不在同一时区的不同系统的日志变得容易得多,并且还消除了 DST 的问题。
我正在创建 logger.js 来制作一些干净的日志。但是,我正在努力以预期的格式获取时区。我有 process.env.TZ
(Unix TZDATA) 的 Continent/Zone 格式,但希望它的格式为 000x
这是我目前拥有的:
/**
* Just. Clean. Logs.
* Usage:
* const logger = new Logger('mymodule');
* logger.log('info', 'This is a log message');
* @summary LOGS!
* @param {string} stat - Application or module the log data is coming from
*/
class Logger {
constructor(stat){
this.stat = stat.toUpperCase();
}
/**
* @summary Log to console
* @param {string} level - Log level i.e WARN, INFO, DEBUG, ERROR etc.
* @param {string} message - Log message
*/
log(level, message){
const d = new Date(Date.now());
const timestamp = `${d.getFullYear()}-${d.getMonth()+1}-${d.getDate()}:${d.getHours()}:${d.getMinutes()}:${d.getSeconds()}.${process.env.TZ}`;
console.log(`${timestamp} ${level.toUpperCase()}:${this.stat}:${message}`);
}
}
module.exports = Logger;
如果答案是创建一个排序数组并手动分配代码,我在哪里可以找到此类数据的综合列表?我设法找到了一些代码,但不确定它们是否是我要找的。
不幸的是,d.getTimezoneOffset()
和 process.env.TZ
都不了解夏令时,因此对于 off-the-shelf javascript.
在 javascript 中有一些 third-party 处理时区和 DST 的库可能会对您有所帮助。无耻插件:我自己的 tzdata-javascript.org
就是其中之一。
也就是说,我强烈建议您在日志中使用 UTC 时间戳。它使得比较来自可能不在同一时区的不同系统的日志变得容易得多,并且还消除了 DST 的问题。