除了 iPhone/iPod Touch,JavaScript 日期在所有浏览器中都有效。

4

我有一些用于在javascript中处理日期的代码。 这在IE,FF,Safari(桌面版本win&mac),Chrome和Opera中工作正常。 在iPhone Safari(移动版Safari)中,我得到了一个“无效日期”的响应。

管理日期的代码如下:

    function fixDateFormat(dateText){
    var isoExp = /^\s*(\d{4})-(\d\d)-(\d\d)\s*$/,
        newDate = new Date(NaN), month,
        parts = isoExp.exec(dateText);
if(parts) { month = +parts[2]; newDate.setFullYear(parts[1], month - 1, parts[3]); if(month != newDate.getMonth() + 1) { newDate.setTime(NaN); } else { newDate.setHours(0, 0, 0, 0); } } return newDate; }

其中日期格式以Y-m-d的形式传递到此函数中(尽管我认为此函数可以处理多种格式)。

2个回答

1

在移动Safari中可能存在某种错误,因为我有这个问题,在iOS设备之外的所有地方都可以正常工作。它无法正确解析有效的ISO日期时间值(例如“2011-10-09T14:00:00.0000000+01:00”)。

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

我能找到的唯一解决方法是将日期对象拆分成包含其属性的JSON对象,然后在客户端上重新构建它们回到Date()对象。


0

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接