新日期的日期无效(“YYYY-MM-DDThh:mm:ss”); instanciation

时间:2014-02-17 10:12:35

标签: javascript date datetime titanium-mobile

我正在使用钛,这是一个基于javascript的移动开发框架。

我有一个数组,其中包含一个字符串,代表一个'日期和时间' ' YYYY-MM-DD HH中的字符串:mm:ss' format(NightsArray [i] [3]返回:2014-02-20 23:00:00),稍后在控制台中显示。

in this page它为Date()对象显示了几个带有几个参数的构造函数:

var today = new Date();
var birthday = new Date("December 17, 1995 03:24:00");
var birthday = new Date("1995-12-17T03:24:00");
var birthday = new Date(1995,11,17);
var birthday = new Date(1995,11,17,3,24,0);

因为你可以看到我的数组字符串最接近的构造函数是第3个:

var birthday = new Date("1995-12-17T03:24:00");

在下面的代码中,我将尝试在" YYYY-MM-DDThh:mm:ss"中格式化我的字符串。使用一些substr()方法形成表单并将结果字符串(在连接之后)传递给Date()构造函数,但是我得到了“无效日期”#39;如控制台日志中所示。

        Ti.API.error("+*///+++NIGHT DATE & TIME(string) : "+NightsArray[i][3]);
        Ti.API.error("+*///+++NIGHT DATE & TIME(string)substr(0,10) : "+NightsArray[i][3].substr(0,10));
        Ti.API.error("+*///+++NIGHT DATE & TIME(string)substr(11,10) : "+NightsArray[i][3].substr(11,10));

        Ti.API.error("+*///+++"+NightsArray[i][3].substr(0,10)+"T"+NightsArray[i][3].substr(11,10));

        var nightDateNTime =  new Date(NightsArray[i][3].substr(0,10)+"T"+NightsArray[i][3].substr(11,10));
        Ti.API.error("+*///+++ CURRENT DATE nightDateNTime(Date): "+nightDateNTime);
        var d = new Date();
        Ti.API.error("+*///+++ CURRENT DATE : "+d);

这是控制台日志:

[ERROR] :+*///+++NIGHT DATE & TIME(string) : 2014-02-19 23:00:00
[ERROR] :  +*///+++NIGHT DATE & TIME(string)substr(0,10) : 2014-02-19
[ERROR] :  +*///+++NIGHT DATE & TIME(string)substr(11,10) : 23:00:00
[ERROR] :  +*///+++2014-02-19T23:00:00
[ERROR] :  +*///+++ CURRENT DATE nightDateNTime(Date): Invalid Date
[ERROR] :  +*///+++ CURRENT DATE : Mon Feb 17 2014 11:09:09 GMT+0100 (CET)

我必须将该字符串与最后的当前日期进行比较,但现在我首先必须将该字符串转换为日期,但我想知道为什么这不起作用..

1 个答案:

答案 0 :(得分:1)

您正在尝试解析UTC日期时间。在Titanium中,当您尝试解析日期时,它将返回无效日期。所以你需要将它转换为datetime字符串。您可以选择是将字符串拆分为分隔符 - 和:,并将每个结果数组项传递给Date构造函数。

尝试以下

function FormatDate(date)
{   
    var arr = date.split(/[- :T]/), // from your example var date = "2012-11-14T06:57:36+0000";
    date = new Date(arr[0], arr[1]-1, arr[2], arr[3], arr[4], 00);
    newDate = date.toString("MMMM");
    //.. do further stuff here  
}