我所拥有的是用户选择/提供的日期字符串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
答案 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);