在javascript中设置区域设置

ddhy6vgd  于 2023-03-11  发布在  Java
关注(0)|答案(4)|浏览(324)

jQuery通过以下方式测试日期的有效性:

!/Invalid|NaN/.test(new Date(value))

new Date(dateString)Date.parse(dateString)相同,并使用浏览器/OS区域设置来解析字符串。
我试图解析DD/MM/YYYY,但我得到了一个错误,因为我的浏览器正在寻找MM/DD/YYYY。由于我的产品将只由DD/MM的人使用,我想强制这种行为。
我可以编写一个自定义验证器,但是是否也可以通过JavaScript更改浏览器的区域设置?

8gsdolmq

8gsdolmq1#

现在你可以使用JavaScript的国际化API了,因为所有浏览器都支持它,它允许你传入一个locale,这将定制日期格式。
控制台.log(新的国际日期时间格式('en-GB').format(date));
参考:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat

p1tboqfb

p1tboqfb2#

您应该使用moment.js来解析日期。

//parse string according to format and return new moment
var day = moment("16/12/2017", "DD/MM/YYYY");  

var dayAsDate = day.toDate();  //you can even covert the moment to a Date

如果您需要处理其他语言环境/脚本中的日期字符串,Globalize也有一个date parsing module
对于其他从Google进入这里的用户,您不能从JS更改浏览器或Javascript区域设置,但可以用途:

  • JS/browser内置Intl.DateTimeFormat来 * 格式化 * 日期(但不解析它们)-不清楚它支持多少语言环境和脚本,可能取决于浏览器
  • lib Globalize.js,最初由Microsoft编写,支持完整的CLDR数据,用于解析或格式化数字
  • 使用lib moment.js根据您指定的格式(但不是特定于语言环境的格式)格式化和解析日期
vybvopom

vybvopom3#

如果您的产品仅由DD/MM/YYYY用户使用,请将浏览器设置为支持DD/MM/YYYY的区域设置。

1l5u6lss

1l5u6lss4#

您无法更改区域设置,因为EMCAScript specification中没有此类功能。
但是,有一个很好的包php.js,它在JavaScript中实现了PHP函数。
其中两个函数是setlocale()和date(),您可以使用它们。

相关问题