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

Create a timestamp that would be equal to yyyy-mm-dd 00:00:00 or 23:59:59

本文关键字:时间戳 yyyy-mm-dd 一个 创建      更新时间:2023-09-26

我有一个用户选择/提供的日期字符串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

尝试使用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);