javascript格式日期obj到yyyy-MM-dd hh:mm:ss返回NAN-NAN-NAN

时间:2011-10-16 09:23:05

标签: javascript datetime appcelerator

我正在使用javascript new Date()并尝试将其格式化为字符串,如下所示:

yyyy-MM-dd hh:mm:ss

然后将其插入SQLite数据库。我正在使用Appcelerator(1.7.2),它将JS使用Mozilla Rhino引擎。

这是功能:

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分钟然后它再次开始工作。

以下是Navicat中查看的SQLite数据库字段的屏幕截图:

Showing errors in Database

Showing design view of database

date.getUTCHours()或date.getUTCMinutes()可以返回NAN:NAN吗?

我必须使用UTC吗?我的客户在中东。

这是在iOS / iPad2设备上运行的Titanium Appcelerator应用程序。

1 个答案:

答案 0 :(得分:0)

虽然代码有点...... icky ......任何工作 JavaScript的Date对象都无法从“getTimePart”方法返回NaN:

  1. 确保客户端使用预期的代码(不是旧版本)和;
  2. 确保客户端没有完全破坏的JavaScript实现,并且;
  3. 没有晦涩 - 例如自定义 - 在所述时髦客户端上使用“日期”对象
  4. 所述环境也可能已经破坏了“getUTCTimePart”方法;是否可以使用非UTC组件重复症状?

    快乐的编码。