Я работаю с титаном, который представляет собой основу для разработки мобильных приложений на основе javascript.

У меня есть массив, который содержит среди своих ячеек строку, представляющую строку «дата и время» в формате «ГГГГ-ММ-ДД ЧЧ: мм: сс» (NightsArray [i] [3] возвращает: 2014-02-20 23:00:00), как показано в консоли позже.

на этой странице показано несколько конструкторов для Объект 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 (), но я получил «Неверная дата», как показано в журнале консоли.

        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
Bardelman 17 Фев 2014 в 14:12
Взгляните на stackoverflow .com / questions / 21580904 /…. Ваш вопрос похож на ссылку выше.
 – 
Anand
17 Фев 2014 в 14:20
Спасибо ! метод разделения в этой функции function FormatDate (date) {var arr = date.split (/ [-: T] /); // из вашего примера var date = "2012-11-14T06: 57: 36 + 0000"; //Ti.API.error("+*///+++ arr: "+ arr); вернуть новую дату (arr [0], arr [1] -1, arr [2], arr [3], arr [4], 00); } решил мою проблему, и теперь я получил как текущую дату, так и дату, полученную из строки, в миллисекундах, но я не мог их сравнивать
 – 
Bardelman
17 Фев 2014 в 15:05
Я поддержал, но случайно отклонил ваш комментарий, вставьте эту функцию в качестве ответа, и я отмечу ее как правильный ответ
 – 
Bardelman
17 Фев 2014 в 15:08

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  
}
1
Anand 17 Фев 2014 в 15:10