问题
jQuery tests the validity of a date via:
!/Invalid|NaN/.test(new Date(value))
new Date(dateString)
is the same as Date.parse(dateString)
and uses browser/OS locale to parse the string.
I'm trying to parse DD/MM/YYYY
but I get an error because my browser is looking for MM/DD/YYYY
. Since my product will be used only by DD/MM
people, I want to force this behaviour.
I could write a custom validator, but is it possible to change the browser locale via JavaScript as well?
回答1:
You can't change the locale, as there is no such feature in the EMCAScript specification.
However, there is a nice package called php.js that implements PHP functions in JavaScript.
Two of the functions are setlocale() and date(). You can use them.
回答2:
You should use moment.js to parse dates.
//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 also has a date parsing module if you need to handle date strings in other locales/scripts.
回答3:
Use can now use JavaScript's Internationalization API because it's now supported in all browsers. It allows you to pass in a locale, which will customize the date format.
console.log(new Intl.DateTimeFormat('en-GB').format(date));
Reference: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat
回答4:
If your product will only be used by DD/MM/YYYY people, set your browser to a DD/MM/YYYY supporting locale.
来源:https://stackoverflow.com/questions/2385474/set-a-locale-in-javascript