簡體   English   中英

如何將“YYYY-MM-DD hh:mm:ss”格式的日期轉換為 UNIX 時間戳

[英]How to convert date in format "YYYY-MM-DD hh:mm:ss" to UNIX timestamp

如何將格式為“YYYY-MM-DD hh:mm:ss”(例如"2011-07-15 13:18:52" )的時間轉換為 UNIX 時間戳?

我試了這段 Javascript 代碼:

date = new Date("2011-07-15").getTime() / 1000
alert(date)

它可以工作,但是當我在輸入中添加 time('2011-07-15 13:18:52') 時會導致NaN

使用長日期構造函數並指定所有日期/時間組件:

var match = '2011-07-15 13:18:52'.match(/^(\d+)-(\d+)-(\d+) (\d+)\:(\d+)\:(\d+)$/)
var date = new Date(match[1], match[2] - 1, match[3], match[4], match[5], match[6])
// ------------------------------------^^^
// month must be between 0 and 11, not 1 and 12
console.log(date);
console.log(date.getTime() / 1000);

以下代碼適用於格式YYYY-MM-DD hh:mm:ss

function parse(dateAsString) {
    return new Date(dateAsString.replace(/-/g, '/'))
}

此代碼將YYYY-MM-DD hh:mm:ss轉換為YYYY/MM/DD hh:mm:ss ,這很容易被Date構造函數解析。

您已接受答案,但可以使用更簡單的正則表達式:

function stringToDate(s)  {
  s = s.split(/[-: ]/);
  return new Date(s[0], s[1]-1, s[2], s[3], s[4], s[5]);
}

alert(stringToDate('2011-7-15 20:46:3'));

當然,輸入字符串必須是正確的格式。

月份從 0 開始,與日子不同! 所以這將完美地工作(測試

function dateToUnix(year, month, day, hour, minute, second) {
    return ((new Date(Date.UTC(year, month - 1, day, hour, minute, second))).getTime() / 1000.0);
}

這將返回自 1970 年 1 月 1 日以來的毫秒數: Date.parse('2011-07-15 10:05:20')

只需除以 1000 即可獲得秒數而不是毫秒數..

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM