无法解析不同文化的日期

时间:2014-10-16 08:44:55

标签: javascript jquery

我想解析日期

var newDateTime = new Date(Date.parse($("#SelctedCalendarDay").val()));

$("#SelctedCalendarDay").val()值为14-okt-2014 in string。

当日期是2014年10月14日时,它会正确解析它。

那么如何解析这个日期14-okt-2014?

2 个答案:

答案 0 :(得分:1)

我不确定您使用的语言(荷兰语?)因此我会使用英语,您可以轻松替换您喜欢的任何语言。您可以使用以下方法解析日期字符串,如2014年10月14日:

function parseDMMMY(s) {

  // Split on . - or / characters
  var b = s.split(/[-.\/]/);

  // Months in English, change to whatever language suits
  var months = {jan:0, feb:1, mar:2, apr:3, may:4, jun:5,
                jul:6, aug:7, sep:8, oct:9, nov:10, dec:11};

  // Create a date object
  return new Date(b[2], months[b[1].toLowerCase()], b[0]);
}

console.log(parseDMMMY('14-Oct-2014')); // Tue Oct 14 2014 00:00:00

请注意,上面将创建一个本地日期对象。它没有对值进行任何验证,所以如果你给它一个类似2014年6月31日的字符串,你将获得2014年7月1日的Date对象。添加验证很容易(需要多行代码),但如果您知道只有有效的字符串将传递给函数,则可能不需要。

答案 1 :(得分:0)

来自Date.parse @ Mozilla

的文档
  

日期时间字符串可以是ISO 8601格式。例如,   “2011-10-10”(仅限日期)或“2011-10-10T14:48:00”(日期和时间)即可   被传递和解析。 UTC时区用于解释参数   ISO 8601格式,不包含时区信息(注意   ECMAScript ed 6草案规定了没有的日期时间字符串   时区将被视为本地,而不是UTC)。

在我看来,原生Date.parse不会转换与特定区域设置匹配的日期字符串。特定浏览器之间似乎也存在一些细微差别。

也许您想使用像moment.js这样的库?

或者您可能希望将一些PHP strtotime连接到您的JS。