Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/413.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 日期不';在钛移动设备中无法正确比较_Javascript_Datetime_Titanium_Titanium Mobile - Fatal编程技术网

Javascript 日期不';在钛移动设备中无法正确比较

Javascript 日期不';在钛移动设备中无法正确比较,javascript,datetime,titanium,titanium-mobile,Javascript,Datetime,Titanium,Titanium Mobile,以下面的代码为例: var first = new Date("2011-09-17T15:12:04.331Z"); var second = new Date("2011-09-17T19:55:19.269Z"); alert(first < second); var first=新日期(“2011-09-17T15:12:04.331Z”); var second=新日期(“2011-09-17T19:55:19.269Z”); 警报(第一次

以下面的代码为例:

var first = new Date("2011-09-17T15:12:04.331Z");
var second = new Date("2011-09-17T19:55:19.269Z");
alert(first < second);
var first=新日期(“2011-09-17T15:12:04.331Z”);
var second=新日期(“2011-09-17T19:55:19.269Z”);
警报(第一次<第二次);

在浏览器()中,它会提示true。在Tianium Mobile中,它会警告0或false。为什么会这样?我无法从源代码中获取不同格式的日期。

我的猜测是Tianium Mobile没有运行足够新的Javascript版本来覆盖您使用的日期格式

如果您查找Date对象的规范,它将获取一个定义为的日期,从中获取它的日期定义,在我看来,它不支持您使用的确切格式。从JavaScript1.8.5开始,它还接受日期,其形式看起来可能涵盖您所拥有的内容

如果可以的话,我建议修改日期字符串,使其像旧的规范一样工作。有关更多信息,请参阅

有效的RFC822日期时间示例如下:

02 Oct 2002 15:00:00 +0200
如果您的日期始终与问题中显示的格式完全相同,则您可以执行如下简单转换:

function ConvertDate(dateIn) {
    var monthStr = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"];
    // desired format "02 Oct 2002 15:00:00 +0200"
    var dateOut = dateIn;
    var matches = dateIn.match(/(\d+)\D+(\d+)\D+(\d+)T(.*)Z$/);
    if (matches) {
        dateOut = matches[3] + " " + 
            monthStr[parseInt(matches[2] - 1, 10)] + " " + 
            matches[1] + " " + 
            matches[4] + " GMT";
    }
    return(dateOut);
}
此处演示:

注意:这个简单的函数假设您的日期总是以您在问题中显示的格式显示,并且始终有效,因为它不会将任何任意ISO 8601日期作为输入,只会以您显示的格式显示

要将当前日期输入到javascript对象中,只需执行以下操作:

var now = Date();
然后,您可以使用
now
对象上的任何方法,包括获取日期任何部分或将其转换为字符串的方法,等等

要获取ConvertDate输出日期的internet表单,可以使用:

now.toUTCString();

如何修改日期字符串以使其与旧规范一样工作?在解析它们之前,我可以在javascript中这样做吗?我从一个我无法控制的外部来源获取日期。我的方向和你一样——只是在我的答案中添加了一个简单的转换例程——在你提出问题之前就已经在做了。似乎是可行的,只要我不将ConvertDate输出转换为新的日期(输出),我就修复了代码中的一个问题(一个月后)。确保你得到了最新版本。啊,我甚至没有注意到!谢谢修理。