1
17
使用 moment.js 这将为您省去很多麻烦,并且是实现这类事情的跨浏览器兼容性的最简单方法。
使用UTC是很重要的,因为您不想受到用户时区的影响。否则,如果您的日期处于DST过渡,则可以将其调整为其他值。(你不是 真正地 对UTC感兴趣,您只是为了保持稳定性。) 针对您更新问题的这一部分:
虽然现在你的要求很明确,但你必须明白 不可能 为了达到您的确切要求,至少不要以跨浏览器、跨地区、跨时区的方式。
说了这么多,你当然可以
但这将
总是
基于代码运行的本地时区。你看,在
因此,在总结中,您遇到的所有问题都与字符串解析为
顺便说一下,你可以考虑看我的Pluralsight课程, Date and Time Fundamentals ,其中更详细地介绍了其中的大部分内容。模块7完全是关于JavaScript和这些陷阱。 |
2
1
JavaScript日期以浏览器的本地时间解析,除非您使用ISO日期格式
这种方法的唯一缺点是,如果您将服务器上的日期格式更改为使用ISO 8601日期格式,它仍然会减去时区偏移量,结果将是错误的输出。
为了100%安全,你
应该
使用ISO 8601日期格式格式化日期字符串,如
|
3
1
日期分析(修改问题前的第一个答案)这将解析输入并隔离每个值。
测试规则#1正在搜索 缺口 从2000年到2015年,以1/2小时的步长
总之,这似乎不是一个javascript错误,但我发现这是关于 外部J : Ext.Date.parse - problem when parsing dates near daylight time change. 第二条测试规则由于这个问题被修改了好几次,有一个测试规则在过去的10年里,通过15分钟的步骤来显示 缺口 以及 重叠,重叠 :
您可以通过在一些不同的时区下运行首选浏览器来测试这一点:
我希望您能够为您的 ExtJS扩展 ,从最后一段中汲取灵感。 屏幕截图TZ=伊朗铬
TZ=伊朗冰鼬(萤火虫)
TZ=美国/中央铬
TZ=美国/中部冰鼬
TZ=亚洲/加沙铬
TZ=亚洲/加沙冰鼬
|
4
0
必须使用可变长度参数构造函数。
|
5
0
问题更在于方法。浏览器的行为完全符合预期,因为它们都知道 Upcoming Daylight Saving Time Clock Changes 。因此,您的Chromium浏览器知道,在3月22日当地时间午夜12:00,需要将时钟向前移动到凌晨1:00,而您的Firefox浏览器知道,3月22号当地时间周六至周日午夜,需要将时间向后移动到周六晚上11:00。 基于UTC定义不同的时区是有原因的。 UTC是一个标准,而不是时区。 如果你想跨浏览器,你需要按照标准生活。坚持UTC,以UTC存储,并以UTC计算所有日期。如果你有一个日历组件,告诉你的组件你是用UTC传递日期的。当您需要向用户显示日期时(因此取决于浏览器),您(如果您未使用组件)或日历组件负责检查夏时制是否有效,并相应调整要显示的日期。 你怎么知道夏时制是否有效? 检查此项 article about adding methods to the date object 要做到这一点。代码背后的逻辑是,如果夏时制是否有效,UTC和本地时间之间的时区差异是不同的。如果您只想检查代码,这里有两个函数:
|
6
0
我找到了解决你问题的办法 它会帮你的 首先,我想解释一下夏时制。 夏令时: 夏季白天更长;太阳升起得早,落得晚。几十年前,国会决定,晚上比早上有更多的日光,因此他们提出了夏时制。时钟在春季提前一小时,在秋季向后移动一小时。这样,你就不会在凌晨4点看到日出,晚上8点看到日落,而是在夏天的中间,早上5点看到日升,晚上9点看到日落西山。他们认为人们在晚上用更少的电来照明他们的房子,等等。 所以现在,大多数国家在夏天使用夏时制,在冬天使用标准时间。 yahoo link 首先,我想给你一个解决问题的方法: 将您的计算机(在win 7测试)时区设置为GMT+3:30,并将日期更改为2015年3月23日。 并在两个浏览器(chromium/mozila)上运行代码。 您将发现相同的结果(即输入时间+1小时) 是的,问题解决了。 您将在您的输入时间中添加+1小时,因为2015年3月22日之后,12:00 AM(对于GMT+3:30)白天的灯光节约时间开始了。( you can check it here 也是从这里 here ) 现在,原因是: 请看一下这个屏幕截图: http://prntscr.com/6j4gdn (赢7) 在这里您可以看到“日光节约时间从2015年3月22日上午12:00开始。 意味着时间将在2015年3月22日中午12:00提前1小时(仅适用于使用夏时制的国家) 因此,如果您将时间更改为2015年3月23日,夏令时将开始(例如GMT+3:30) 您将在两个浏览器上找到正确的输出。 我猜chrome总是使用夏时制(仅适用于那些使用夏时计的国家) 我已经通过改变系统的时间进行了测试(但不是100%确定) 另一方面,mozila支持夏令时系统。因此,在2015年3月22日中午12:00 GMT+3:30之后,mozila将为您的输入日期时间增加1小时 我想这对你们所有人都有帮助。 |
Softly · 单选按钮未按预期取值 1 年前 |
SlickRed · 我无法使用JS关注HTML元素 1 年前 |
assembler · Nextjs没有处理发布请求 1 年前 |
BADRUM · 执行两个获取功能后,如何导航回页面? 1 年前 |
Toniq · javascript为php保存多维数组 1 年前 |