javascript - 新日期无效日期 ("YYYY-MM-DDThh:mm:ss");实例化

标签 javascript date datetime titanium-mobile

我正在使用 Titan,它是一个基于 JavaScript 的移动开发框架。

我有一个数组,其中的单元格中包含一个字符串,表示“YYYY-MM-DD HH:mm:ss”格式的“日期和时间”字符串(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);

正如您所看到的,与我的数组字符串最接近的构造函数是第三个:

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

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

        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)

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

最佳答案

您正在尝试解析 UTC 日期时间。在 Titanium 中,当您尝试解析日期时,它将返回无效日期。所以你需要将其转换为日期时间字符串。您可以选择按分隔符 - 和 : 拆分字符串,并将每个结果数组项传递给 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  
}

关于javascript - 新日期无效日期 ("YYYY-MM-DDThh:mm:ss");实例化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21826161/

相关文章:

c++ - fmt和Howard Hinnant的日期:为什么从fmt::to_string “{}”? fmt和日期的最佳做法?

php - 如何将每天 SQL 中的预订数量限制为 50 个用户

python - 填充 pandas 中多索引数据框的所有月份

python - 从年到月和周的日期偏移

javascript - 使用异步/等待时未定义 regeneratorRuntime

javascript - 单选按钮 : weird selection behaviour

php - 在 MySQL 数据库中存储今天的日期

sql - 在 SQL Server 2008R2 上以毫秒为单位返回 DATEDIFF

javascript - 使用 getBackgroundPage() 给我 : Object [object Window] has no method 'getFromStorage'

javascript - jQuery:获取可能包含或不包含链接的段落标记的文本内容