在PostgreSQL数据库中,我在timestamp列中保存了这个值: 2013-03-15 08:50:00 。 我的目标是从数据库中获取此日期,并检查当前时间是否比数据库中的时间少12小时。
为此,我希望从new Date()
获取当前时间并将其与数据库中的日期进行比较 - 但由于时间格式不同,这不起作用。
我怎么能这样做并以相同(可比较)的格式转换那些时间?
答案 0 :(得分:5)
var ds ='2013-03-15 08:50:00';
没有任何时区信息,你无法确切知道它是哪一天。 假设您的字符串是UTC,您可以使用Date构造函数 如果用'T'替换空格并在末尾添加'Z':
var ds='2013-03-15 08:50:00';
var day=new Date(ds.replace(' ','T')+'Z');
day.toUTCString()
星期五,2013年3月15日08:50:00 GMT
您可以编写一个解析ISO或sql格式的日期解析函数,
某些旧浏览器可能需要。
Date.fromISO= function(s){
var day, tz,
rx=/^(\d{4}\-\d\d\-\d\d([tT ][\d:\.]*)?)([zZ]|([+\-])(\d\d):(\d\d))?$/,
p= rx.exec(s) || [];
if(p[1]){
day= p[1].split(/\D/);
for(var i= 0, L= day.length;i<L;i++){
day[i]= parseInt(day[i], 10) || 0;
};
day[1]-= 1;
day= new Date(Date.UTC.apply(Date, day));
if(!day.getDate()) return NaN;
//adjust for time zone offset:
if(p[5]){
tz= (parseInt(p[5], 10)*60);
if(p[6]) tz+= parseInt(p[6], 10);
if(p[4]== '+') tz*= -1;
if(tz) day.setUTCMinutes(day.getUTCMinutes()+ tz);
}
return day;
}
return NaN;
}
然后拨打 Date.fromISO('2013-03-15 08:50:00');