4

我有一些代码可以在 javascript 中处理日期。这适用于 IE、FF、Safari(桌面版 win 和 mac)、Chrome、Opera。在 iPhone safari(移动 safari)中,我收到“无效日期”响应。

管理日期的代码是

    功能修复日期格式(日期文本){
    var isoExp = /^\s*(\d{4})-(\d\d)-(\d\d)\s*$/,
        newDate = 新日期(NaN),月份,
        零件 = isoExp.exec(dateText);

    如果(部分){
      月 = +parts[2];
      newDate.setFullYear(parts[1], month - 1, parts[3]);
      如果(月!= newDate.getMonth()+ 1){
        newDate.setTime(NaN);
      } 别的 {
        newDate.setHours(0, 0, 0, 0);
      }
    }
    返回新日期;
    }

dateFormat 作为 Ymd 发送到此函数的位置(尽管我的理解是此函数将处理多种格式)。

4

2 回答 2

1

Mobile Safari 中一定有一些错误,因为我有这个问题,它可以在除 iOS 设备之外的任何地方工作。它没有正确解析有效的 ISO 日期时间值(例如 '2011-10-09T14:00:00.0000000+01:00')。

使用 UNIX 时间戳的问题,尽管它适用于新的 Date().setTime() 方法;时间将转换为 UTC,因此如果您的应用程序不处理 UTC 偏移量,它将显示错误的时间。特别是,如果 datetime 指的是未来的某个日期,或者在夏令时已更改的时间段内,则纪元时间戳中的时间将不正确。这就是为什么不使用时间戳来存储日期时间值的原因。

我可以解决此问题的唯一解决方法是将日期对象拆分为包含其属性的 JSON 对象,然后在客户端将它们重新构建为 Date() 对象。

于 2011-09-25T13:50:09.733 回答
0

我通过传递“自纪元以来的毫秒数”而不是这个格式化的日期字符串来解决它。

于 2011-09-21T09:53:13.223 回答