创建一个等于yyyy-mm-dd 00:00:00或23:59:59的时间戳

时间:2013-11-21 20:03:24

标签: javascript jquery timestamp

我所拥有的是用户选择/提供的日期字符串yyyy-mm-dd。根据用户使用的输入。我想创建一个时间戳,该时间戳等于午夜开始00:00:00或午夜结束23:59:59

我想在纯JavaScript中执行此操作。但UTC / GMT自动抵消事情就是把它抛到一个循环中。客户端我看到午夜,服务器端我看到午夜+偏移,例如来自加利福尼亚州。时间戳等于yyyy-mm-dd 08:00:00

是否总有办法提出00:00:00或23:59:59?

我当前和稍微努力的尝试是

function yyyy_mm_ddToTS(str, beforeMidnight)
{
    //if beforeMidnight == true, 23:59:59 is appended to the yyyy-mm-dd string
    if(typeof str !== 'undefined')
    {
        //validate str format = yyyy-mm-dd
        var re = /^\d{4}-\d{1,2}-\d{1,2}$/;
        if(re.test(str) == false){msgDisplayBox(null, 'Invalid date string use: yyyy-mm-dd', null);return false;}
    }
    append_hh_mm_ss = ' 00:00:00';
    if(typeof beforeMidnight !== 'undefined')
    {
        if(whatDataType(beforeMidnight) == "boolean")
        {
            if(beforeMidnight == true)
            {
                append_hh_mm_ss = ' 23:59:59';
            }
        }
    }
    var newStr = str+append_hh_mm_ss;
    var d = newStr.match(/\d+/g);
        //d = d.join(',');
        console.log(d[0], d[1] - 1, d[2], d[3], d[4], d[5]);
    var dateString = new Date(d[0], d[1] - 1, d[2], d[3], d[4], d[5]);
        dateString.setHours(0,0,0,0);
    return dateString.getTime();
}

稍后转换服务器端时会返回yyyy-mm-dd 08:00:00而非yyyy-mm-dd 00:00:00

1 个答案:

答案 0 :(得分:1)

尝试使用UTC日期时间戳而不是Date.getTime()

var cDate = new Date();
var UTCDateMorning = Date.UTC(cDate.getFullYear(),cDate.getMonth(),cDate.getDate(),0,0,0);
var UTCDateMidnight = Date.UTC(cDate.getFullYear(),cDate.getMonth(),cDate.getDate(),23,59,59);