当前位置: 首页 > 知识库问答 >
问题:

如何告诉JavaScript日期从哪里取TimezoneOffset?

郑俊材
2023-03-14

我使用new Date( ) .gettime()将日期字符串从1970年起传递到毫秒。

问题是日期字符串上不包含时区。他们是英国人,所以时区将是GMT或GMT+1取决于日期...

当我在前端(Chrome)或后端(Node.js)中使用此技术时。所取时区为英国时区(GMT或GMT+1,视日期而定)。我认为这是从操作系统中提取的。

但是,在使用Node.js服务器时,我被告知该服务器配置为UTC格式...时区总是格林尼治标准时间,导致英国夏季时间出现错误。

有没有什么方法告诉date从操作系统中获取时区而不更改服务器配置?

示例:

var aDate = new Date('2016-06-23 10:15:0');
var timestamp = aDate.getTime();

以防万一我的解释不清楚:

// Executed on 28-06-2016

// In the browser (in London)
new Date().getTimezoneOffset();                            // -60
new Date('28-06-2016 11:11:11').getTimezoneOffset();       // -60
new Date('28-01-2016 11:11:11').getTimezoneOffset();       // 0

// In the Node.js server I am forced to use, which is configured to use UTC
new Date().getTimezoneOffset();                            // 0
new Date('28-06-2016 11:11:11').getTimezoneOffset();       // 0
new Date('28-01-2016 11:11:11').getTimezoneOffset();       // 0

// Ideally, I would like to have the output I get in the browser when I run the code in the UTC Node.js server

共有1个答案

孙翰墨
2023-03-14

我建议使用Moment Timezone来实现这一点,因为如果没有库,实现起来会不必要的复杂。若要在给定时区中从给定日期获取以毫秒为单位的UTC,可以执行以下操作:

const moment = require('moment-timezone');

function londonTimeToUTC(dateString) {
  return moment.tz(dateString, 'DD-MM-YYYY HH:mm:ss', 'Europe/London').valueOf();
}

console.log(londonTimeToUTC('28-06-2016 11:11:11')); // 1467108671000
console.log(londonTimeToUTC('28-01-2016 11:11:11')); // 1453979471000

传递给moment.tz()的第二个参数是一个格式字符串,如果日期字符串不是ISO格式,则这是必需的。第三个参数是任何有效的时区标识符。

 类似资料:
  • 问题内容: 我想告诉CMake将文件和文件夹输出到其他文件夹而不是当前文件夹。我在下面谈论CMake生成的文件: 文件:CMakeCache.txt 目录:CMakeFiles / 文件:Makefile 目录:bin / 文件:cmake_install.cmake 有没有办法让CMake在另一个文件夹中输出这些文件和文件夹?我编写了一个从项目目录根目录执行CMake的工具,结果我的项目目录被上

  • 问题内容: 我从ResultSet获取Date对象时遇到问题。在数据库中,它具有一个值(例如2014-08-01),并且从resultSet获取它之后,它具有另一个值(2014-08-31)。我知道ResultSet的getDate方法返回java.sql.Date,但是我尝试了一些解决方案,例如: 或 但问题是相同的。如果尝试 ,则抛出NullPointerException。 有人可以解释吗?

  • 问题内容: 好的,我觉得我缺少一些关键的信息。 在本地,我有1个主Redis服务器和1个从Redis服务器运行在不同的端口上 http://redis.io/topics/sentinel 我也有3个哨兵,他们似乎彼此了解,并按预期工作。 现在,我有大量的Java代码指向我的主Redis服务器所在的127.0.0.1:6379。 如果我撤下主服务器,哨兵将按预期的方式将奴隶提升为主服务器,因此现在

  • 问题内容: 如何从Python中的日期时间对象获取日期名称(例如星期一,星期二,星期三,星期四,星期五,星期六和星期日)? 因此,例如,应该给我。 问题答案: 有关datetime.now,datetime.strftime以及有关strftime的更多信息,请参见Python文档。