请使用以下代码:
var first = new Date("2011-09-17T15:12:04.331Z");
var second = new Date("2011-09-17T19:55:19.269Z");
alert(first < second);
在浏览器(http://jsfiddle.net/fdqjs/0/)中,它会发出警告。在Titanium Mobile中,它会发出0或0的警报。为什么是这样?我无法以与源不同的格式获取日期。
答案 0 :(得分:1)
我的猜测是,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();