Javascript语言环境日期转换
我有一个字符串进入函数,这个字符串是来自瑞典的日期,格式为2016 maj 01
。传入此函数的是国家/地区代码sv-se
。我需要将日期字符串转换为有效的日期对象,然后可以应用该语言环境。Javascript语言环境日期转换
这是用于全局日期验证。
到目前为止,我已经
var date = new Date();
Intl.dateTimeFormat(locale, options).format(date);
我希望能够有new Date("2016 maj 01")
然而,因为这不是英语,这是一个无效的日期。我可以使用区域设置将其转换为有效的日期对象吗?
有人建议我的问题与另一个类似。我的问题不同的方式是,我有月份缩写名称。如果月份显示数字这不会是一个问题
正如我所评论的,这可能是一个现有问题的重复。 JavaScript日期对象不能从本地化字符串构建。
但是,你婉从瑞典使自己的日期建设者:
Date.fromSwedish = (function() {
var months = {
'jan': 0,
'feb': 1,
'mar': 2,
'apr': 3,
'maj': 4 /*...*/
};
return function(s) {
var splitted = s.split(' ');
var year = splitted.length > 0 ? splitted[0] : 1970;
var month = splitted.length > 1 ? months[splitted[1].toLowerCase()] : 0 ;
var day = splitted.length > 2 ? splitted[2] : 1;
return new Date(year, month, day);
};
}());
document.write(Date.fromSwedish("2016") + "<br/>");
document.write(Date.fromSwedish("2016 feb") + "<br/>");
document.write(Date.fromSwedish("2016 maj 01") + "<br/>");
这看起来不错,问题是我需要丹麦,芬兰和挪威以及它。我希望有一个全球性的解决方案。 –
恐怕你将不得不为其他语言实现自己的版本,或者找到一个有用的全球化图书馆 –
[JS的可能重复:新的Date()不接受日期字符串在我自己的语言环境(d/M/y)](http://stackoverflow.com/questions/7165483/js-new-date-is-not-accepting-date-string-in-my-own-locale-dmy) –
不幸的是,我的月进来作为一个缩写字符串不是数值(maj不是5) –