datepicker解析日期问题

时间:2012-08-21 10:26:21

标签: javascript jquery parsing datetime datepicker

我有下一个问题: 当我从服务器接收日期时,我想通过datepicker格式化它,但是datepicker会抛出异常,因为它无法解析日期。 这是我的日期,来自服务器(obj.value): 08.20.2012 19:01:32 这是我试图解析这个日期的代码: $.datepicker.formatDate('dd.MM.yy', new Date(obj.value)); 我使用MM因为我需要月份的全名。 这是解析后的输出: NaN.NaN.NaN 那么如何摆脱这种异常?

5 个答案:

答案 0 :(得分:4)

您需要将日期(obj.value)更改为有效的JavaScript日期格式。最好,如果你可以在服务器端。

如果您想在客户端进行此操作,则需要将.替换为/,以便获得08/20/2012 19:01:32而不是08.20.2012 19:01:32

new Date(obj.value.replace(/\./g, '/'))

答案 1 :(得分:1)

您正在尝试使用JavaScript解析日期,这完全取决于实现。似乎许多浏览器无法解析您提供的字符串。你将不得不做两件事之一:

  • 提供有效字符串。
  • 调用Date构造函数。

另请参阅此答案:Why does Date.parse give incorrect results?

答案 2 :(得分:0)

Date()仅收到integersstrings。在将obj传递给Date()

之前,您应该使用obj的值

答案 3 :(得分:0)

如果您可以控制服务器返回的内容,目前最简单的方法是返回UNIX时间戳而不是格式化的日期字符串。

UNIX纪元和Javascript纪元是相同的(1970年1月1日00:00),但UNIX时间戳以秒为单位,而javascript的Date对象以毫秒为单位。

所以:

$.datepicker.formatDate('dd.MM.yy', new Date(obj.value * 1000));

如您所见 HERE ,obj.value可以是整数或字符串。在字符串的情况下,javascript的自动类型转换会查看乘法。

答案 4 :(得分:0)

首先,您需要将传入的日期字符串重新格式化为可通过javascript Date()函数解析的内容。如果您无法控制来自您服务器的格式,我会建议

var incDate, dateString, timeString, dateSplit, timeSplit;
incDate = obj.value.split(" ");
dateString = incDate[0];
timeString = incDate[1];
dateSplit  = dateString.split(".");
timeSplit = timeString.split(":");
$.datepicker.formatDate('dd.MM.yy', new Date(dateSplit[2],dateSplit[0]-1,dateSplit[1],timeSplit[0],timeSplit[1],timeSplit[2]));