我的猜测是 Titanium Mobile 没有运行足够新的 Javascript 版本来覆盖您使用的日期格式。
如果您查找 Date 对象的规范,它会采用 RFC 1123 中定义的日期,它从 RFC 822 获取日期定义,在我看来它不支持您使用的确切格式。从 Javascript 1.8.5 开始,它还接受 ISO 8601 形式的日期,看起来它可能涵盖了你所拥有的。
如果可以的话,我建议修改您的日期字符串以像旧规范一样工作。请参阅here on MDN 了解更多信息。
一个有效的 RFC822 日期时间示例如下:
02 Oct 2002 15:00:00 +0200
如果您的日期始终与您在问题中显示的格式完全相同,那么您可以进行如下简单的转换:
function ConvertDate(dateIn) {
var monthStr = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"];
// desired format "02 Oct 2002 15:00:00 +0200"
var dateOut = dateIn;
var matches = dateIn.match(/(\d+)\D+(\d+)\D+(\d+)T(.*)Z$/);
if (matches) {
dateOut = matches[3] + " " +
monthStr[parseInt(matches[2] - 1, 10)] + " " +
matches[1] + " " +
matches[4] + " GMT";
}
return(dateOut);
}
这里是演示:http://jsfiddle.net/jfriend00/APxN7/。
注意:这个简单的函数假定您的日期始终采用您在问题中显示的确切格式并且始终有效,因为它不会处理任何任意 ISO 8601 日期作为输入,只会处理您显示的格式。
要将当前日期转换为 javascript 对象,您可以这样做:
var now = Date();
然后,您可以在now 对象上使用任何methods defined for the Date object,包括获取日期的任何部分或将其转换为字符串的方法等......
要获取 ConvertDate 输出的日期的互联网形式,您可以使用:
now.toUTCString();