2013-11-21 62 views
0

我擁有的是用戶選擇/提供的日期字符串yyyy-mm-dd。基於用戶使用的輸入。我想創建一個時間戳,相當於午夜的開始日期00:00:00或午夜的結束日期23:59:59創建一個時間戳,該時間戳等於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

嘗試使用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); 
+0

嗯,嗯..不知道那個'。 UTC()'只是做我所需要的,謝謝 – chris

+0

不,幾乎做到了:-)只是意識到「早晨」一個是輸出12:00:00。我需要00:00:00,但這比我採用 – chris

+0

@chris的路線要近得多,可能是24 vs 12小時時間格式問題,例如23:59:59是明確的24小時格式,但是00:00:00可能是24和12小時格式 – mdolbin