Формат javascript Дата obj to yyyy-MM-dd чч: мм: сс возвращает NAN-NAN-NAN - PullRequest
0 голосов
/ 16 октября 2011

Я беру новый JavaScript Date () и пытаюсь отформатировать его в виде строки, например:

гггг-мм-дд чч: мм: сс

, а затем вставляю ее вбаза данных SQLite.Я использую Appcelerator (1.7.2), который использует движок Mozilla Rhino для JS.

Вот функция:

date.DateToSQLite = function(date){
if (date == null){
    return null;
}  else if (date instanceof Date == false){
    throw "not a date Object value:" + date;
};
var result  = date.getUTCFullYear();
result += '-';
if (date.getUTCMonth() < 9){
    result += '0';
}
result += date.getUTCMonth() +1;
result += '-';
if (date.getUTCDate() < 10){
    result += '0';
}
result += date.getUTCDate();
result += ' ';
if (date.getUTCHours() < 10){
    result += '0';
}
result += date.getUTCHours();
result += ':';
if (date.getUTCMinutes() < 10){
    result += '0';
}
result += date.getUTCMinutes();
result += ':';
if (date.getUTCSeconds() < 10){
    result += '0';
}
result += date.getUTCSeconds();
result += '.';
if (date.getUTCMilliseconds() < 100){
    result += '0';
}
if (date.getUTCMilliseconds() < 10){
    result += '0';
}
result += date.getUTCMilliseconds();

//Ti.API.info('date.DateToSQLite result:' + result + ' date:' + date);

return result;

};

Я не могувоссоздайте это сам, функция, кажется, всегда работает для меня, но в некоторых клиентских базах данных отображается NAN-NAN-NAN NAN: NAN: NAN.NAN, и это может продолжаться до 40 минут, а затем снова начинает работать.

Вот снимок экрана поля из базы данных SQLite при просмотре в Navicat:

Showing errors in Database

Showing design view of database

Может date.getUTCHours () илиdate.getUTCMinutes () return NAN: NAN?

Нужно ли использовать UTC?Мои клиенты находятся на Ближнем Востоке.

Это приложение Titanium Appcelerator, работающее на устройствах iOS / iPad2.

1 Ответ

0 голосов
/ 16 октября 2011

Хотя код вроде ... icky ... для любого работающего объекта Date в JavaScript невозможно вернуть NaN из методов "getTimePart":

  1. Убедитесь, что клиент (ы) используют ожидаемый код (не старую версию), и;
  2. Убедитесь, что клиент (ы) не имеет абсолютно сломанной реализации JavaScript, и;
  3. Нет неясного - например, пользовательского - объекта «Date», который будет использоваться на указанных клиентах в стиле фанк

Также возможно, что указанные среды только что нарушили «getUTCTimePart»методы;Можно ли повторить симптомы с компонентами, отличными от UTC?

Счастливое кодирование.

...