尽管看起来很合逻辑,但是可以接受的答案是错误的,因为JavaScript日期不能那样工作。

在此必须特别注意的是,JavaScript中的日期(即new Date()-0或x)的数值始终以毫秒为单位,以纪元为准,该纪元是无时区的量,基于宇宙历史中精确的精确时刻。 您不需要对new Date(x)返回的数值加或减任何东西,就可以将数值转换为时区,因为该数值没有时区。 如果确实具有时区,则JavaScript日期中的其他所有内容均将不起作用。

时区,leap年,leap秒以及对我们当地时间和日期的所有其他无休止的复杂调整,都是基于此一致且明确的数值,而不是相反的。

以下是日期(提供给日期构造函数)的数值如何与时区无关的示例:

在中部标准时间:

new Date(0);

// Wed Dec 31 1969 18:00:00 GMT-0600 (CST)

在阿拉斯加的安克雷奇市:

new Date(0);

// Wed Dec 31 1969 15:00:00 GMT-0900 (AHST)

在法国巴黎:

new Date(0);

// Thu Jan 01 1970 01:00:00 GMT+0100 (CET)

至关重要的是要注意,在所有情况下,基于零毫秒的无时区的纪元偏移,结果时间是相同的。 在法国巴黎,凌晨1点与前一天在阿拉斯加安克雷奇的下午3点完全相同,而在伊利诺伊州芝加哥,则与下午6点完全相同。

因此,此页面上接受的答案不正确。 观察:

// Create a date.

date = new Date();

// Fri Jan 27 2017 18:16:35 GMT-0600 (CST)

// Observe the numerical value of the date.

date.valueOf();

// 1485562595732

// n.b. this value has no timezone and does not need one!!

// Observe the incorrectly "corrected" numerical date value.

date.valueOf() + date.getTimezoneOffset() * 60000;

// 1485584195732

// Try out the incorrectly "converted" date string.

new Date(date.valueOf() + date.getTimezoneOffset() * 60000);

// Sat Jan 28 2017 00:16:35 GMT-0600 (CST)

/* Not the correct result even within the same script!!!! */

如果您在另一个时区中有日期字符串,则无需转换为x创建的结果对象。 为什么? 该日期的JavaScript数值将是相同的,而不管其时区如何。 无论原始时区是什么,JavaScript都会自动执行极其复杂的过程以提取自该纪元以来的原始毫秒数。

最重要的是,将文本日期字符串x插入到new Date(x)构造函数中,将自动从原始时区(无论可能是什么)转换为无时区的时间毫秒表示形式,无论任何时区,该时间都相同。 在实际的应用程序中,您可以选择在所需的任何时区中显示日期,但不要在日期的数值上加/减。 所有转换已在创建日期对象的那一刻发生。 时区已经不存在了,因为使用精确定义且无时区的时间实例化了date对象。

仅当考虑到应用程序的用户时,时区才再次开始存在。 用户确实具有时区,因此您只需向用户显示该时区。 但这也会自动发生。

让我们考虑一下原始问题中的几个日期:

date1 = new Date("Fri Jan 20 2012 11:51:36 GMT-0300");

// Fri Jan 20 2012 08:51:36 GMT-0600 (CST)

date2 = new Date("Fri Jan 20 2012 11:51:36 GMT-0300")

// Fri Jan 20 2012 08:51:36 GMT-0600 (CST)

控制台已经知道我的时区,因此它会自动显示这些时间对我意味着什么。

而且,如果您想知道格林尼治标准时间(GMT)/ UTC表示的时间,则也无需转换! 您根本不会更改时间。 您只需显示时间的UTC字符串即可:

date1.toUTCString();

// "Fri, 20 Jan 2012 14:51:36 GMT"

几乎可以保证使用JavaScript日期的数字值编写的代码可以以数字方式转换时区。 时区太复杂了,这就是设计JavaScript的原因,因此您无需这样做。

js 获取当前gmt时间_javascript-如何将日期转换为GMT?相关推荐

  1. js获取浏览器当前时间

    js获取浏览器当前时间:格式:2020-05-18 10:44:40 <script type="text/javascript">var nowDate=new Da ...

  2. js如何获取计算机当前时间,js获取当前系统时间

    搜索热词 下面是编程之家 jb51.cc 通过网络收集整理的代码片段. 编程之家小编现在分享给大家,也给大家做个参考. var myDate = new Date(); myDate.getYear( ...

  3. Js获取当前系统时间,24小时制

    Js获取当前系统时间 var myDate = new Date(); myDate.getYear();        //获取当前年份(2位) myDate.getFullYear();    / ...

  4. js获取ISO8601规范时间,使用UTC时间,格式为:YYYY-MM-DDThh:mm:ssZ

    js获取ISO8601规范时间,使用UTC时间,格式为:YYYY-MM-DDThh:mm:ssZ var d = new Date(); d.setHours(d.getHours(), d.getM ...

  5. js 实时显示服务器时间,js获取服务器实时时间

    本文主要和大家分享js获取服务器实时时间,主要以代码的方法和大家分享,希望能帮助到大家. AJAX获取服务器时间 /* * ajax 函数,处理 ajax 请求 * @param function c ...

  6. js获取系统当前时间并格式化

    js获取系统当前时间并格式函数: Date.prototype.Format = function (fmt) { var o = { "M+": this.getMonth() ...

  7. Js获取年月日及时间转换

    Js获取年月日及时间转换 1.获取年.月.日和将时间戳转换成日期格式 // 简单的一句代码 var date = new Date(时间戳); //获取一个时间对象 /** 下面是获取时间日期的方法, ...

  8. js 获取当前日期,计算往后三个月的日期

    js 获取当前日期,计算往后三个月的日期 合同管理中的试用期,即当前入职时间(年月日)与到三个月试用期的时间(年月日) //css.Partyinp{width: 40px;height: 20px; ...

  9. JS 返回两个时间之间的所有日期、月份、年份、季度

    JS 返回两个时间之间的所有日期.月份.年份.季度 1.日期 /*** 获取两日期之间日期列表函数* 返回两个时间之间所有的日期* 参数示例 ('2021-05-31','2021-06-30')* ...

最新文章

  1. Jq-table最后一行添加样式
  2. 计算机知识和技能,计算机基本知识和技能PPT课件.ppt
  3. Thrift使用指南
  4. 华为智能计算发布FusionServer Pro智能服务器
  5. 用vue实现简单实时汇率计算功能
  6. php上传文件大小读取,怎么修改php上传文件的大小限制?
  7. 模板 manacher算法
  8. 计算机的组成 —— 存储(内存/硬盘)
  9. 为什么大数据分析很重要
  10. 24种编程语言的Hello World程序
  11. 欧姆龙服务器数码管不显示问题,TM1640驱动数码管不显示问题
  12. 常见概率抽样方法及其适用场景总结
  13. c语言函数实验总结小说,大一上期C语言实验报告7函数
  14. linux ubi 分区,Linux ubi子系统原理分析
  15. 论文解析 | 不确定性校准的化学反应预测模型
  16. LSD-slam算法原理
  17. ssh登录主机报错: Unable to negotiate with 172.222.222.243 port 22: no matching key exchange method found.
  18. python解压多层压缩包,兼容tar.gz .tgz .zip .7z .gz
  19. MATLAB数字图像课题的开题报告
  20. 密度聚类:OPTICS算法简单易懂版

热门文章

  1. 后渗透后门_TheFatRat:Msfvenom傻瓜化,小白也可以学渗透
  2. oracle如何获取异常,ORACLE-函数异常处理(EXCEPTION)
  3. Storm案例:统计单词个数
  4. Python学习笔记:列表、字典与集合解析(List, Dict and Set Comprehensions)
  5. 【BZOJ1082】【codevs2456】栅栏,让人抓狂的优化剪枝
  6. 使用情态动词提出请求和问题_53
  7. c# contains方法_HTML5系列之新的API(新操作方法、文件获取、地理定位、音视频、摄像头等)
  8. 20178.27 万径人踪灭 思考记录
  9. 2017.8.17 陌上花开 思考记录
  10. java excel 取值_java实现Excel 单元格取值工具类