JS: new Date() 不接受我自己的语言环境中的日期字符串 (d/m/y)
我的浏览器(即我的操作系统)应该知道我在澳大利亚以及正确的日期格式是什么。在这种情况下,是 d/m/y,而不是 m/d/y。但是,如果我运行以下代码:
alert(new Date("21/11/1968"))
结果是“Thu Sep 11 1969”。它认为月份是第一位的,并相应地进行调整。
这是为什么呢?答案是始终使用通用格式作为日期函数的输入,还是有办法告诉浏览器期望以我的区域设置格式输入日期?
My browser (ie. my OS) should know I'm in Australia and what the correct date format is. In this case, d/m/y, not m/d/y. However if I run the following code:
alert(new Date("21/11/1968"))
The result is "Thu Sep 11 1969". It is thinking the month comes first and adjusting accordingly.
Why is this? Is the answer to always use a universal format as input to date functions, or is there a way to tell the browser to expect dates input in my locale format?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
将日期字符串转换为可提供预期结果的格式非常简单(“yyyy/mm/dd”或“yyyy-mm-dd”):
[编辑 2023] 您可能会喜欢这个更通用的方法(使用它@Stackblitz)。
It's pretty simple to convert your date string to a format that will give the expected result ('yyyy/mm/dd' or 'yyyy-mm-dd'):
[Edit 2023] You may like this more generic method (play with it @Stackblitz).
Date 对象非常弱。您无法告诉它需要什么格式。您可以像您所说的那样使用 m/d/y 中的字符串创建它,或者 new Date(year,month,day[,hours,secs,milliseconds]);
The Date object is very weak. You cannot tell it what format to expect. You can create it with a string in m/d/y like you stated, or
new Date(year, month, day[, hours, seconds, milliseconds]);
new Date(string_date) 支持以下日期格式:
new Date(string_date) supports the following Date formats:
您需要使用新的日期对象来解析它,例如
const myDate = new Date('Wed Dec 30 2020 00:00:00 GMT-0500 (Eastern Standard Time)')
然后将其转换:
const dateFormatted = myDate.toLocaleDateString("en-US")
You need to parse it using a new date object like
const myDate = new Date('Wed Dec 30 2020 00:00:00 GMT-0500 (Eastern Standard Time)')
Then convert it:
const dateFormatted = myDate.toLocaleDateString("en-US")