簡體   English   中英

如何從字符串創建紀元?

[英]How can I create epoch from String?

全部,我需要使用Javascript從字符串創建紀元時間。 現在,我知道可以使用以下內容:

var dateStr = '01/01/2016 1:10 PM'
var dateObj = new Date(dateStr);
console.log(dateObj.getSeconds());

我的問題是使用上面的代碼,我的數據中包含毫秒。 以以下為例:

var dateStr = '01/01/2016 1:10:49.181 PM'
var dateObj = new Date(dateStr);
console.log(dateObj.getSeconds());

使用這種格式,我得到一個NaN錯誤。 有沒有一種方法可以將第二個示例中的日期時間轉換為紀元,同時保留毫秒數?

dateObj.getTime()將返回從紀元開始的毫秒數。 除以1000並四舍五入以獲得秒。

 var dateStr = '01/01/2016 1:10 PM' var dateObj = new Date(dateStr); console.log(Math.round(dateObj.getTime() / 1000)); var dateStr = '01/01/2016 1:10:49.181' var dateObj = new Date(dateStr); console.log(Math.round(dateObj.getTime() / 1000)); 

下面是一個可能的解決方法:

var dateStr = '01/01/2016 1:10:49.181 PM',
    reg = new RegExp(/\.[0-9]{1,3}/);

var dateObj = new Date(dateStr.replace(reg, ''));

console.log(
  (dateObj.getTime() + 1000 * Number(reg.exec(dateStr)[0]))
);

這將包括最終結果中的毫秒數(1451650249181)。 您也可以完全丟棄它們,在這種情況下,您只需要替換部分而無需執行部分。

反轉操作

下面是使用標准Date方法進行反向操作的一種可能方法。

當心:未經測試。

var ts = new Date(1451650249181);

var dateStr =
  ('0' + ts.getDate()).substr(-2, 2) + '/' +
  ('0' + (ts.getMonth() + 1)).substr(-2, 2) + '/' +
  ts.getFullYear() + ' ' +
  (ts.getHours() % 12 || 12) + ':' +
  ('0' + ts.getMinutes()).substr(-2, 2) + ':' +
  ('0' + ts.getSeconds()).substr(-2, 2) + '.' +
  ('00' + (ts.getTime() % 1000)).substr(-3, 3) + ' ' +
  (ts.getHours() >= 12 ? 'PM' : 'AM');

暫無
暫無

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

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