比较JavaScript日期时间和PostgreSQL时间戳

8
在PostgreSQL数据库中,我已将此值保存在时间戳列中:2013-03-15 08:50:00。 我的目标是从数据库获取此日期并检查当前时间是否比数据库中的时间早12小时。

为此,我想从new Date()获取当前时间,并将其与数据库中的日期进行比较 - 但由于不同的时间格式,这不起作用。
我应该如何做,转换这些时间为相同(可比较)的格式?

我喜欢使用date.js - http://www.datejs.com/ - Diodeus - James MacFarlane
1
除非绝对必要从客户端获取时间,否则为什么不使用您正在使用的任何应用程序代码从服务器获取时间来查询数据库呢? - Dan Bracuk
1个回答

6

变量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');


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接