簡體   English   中英

如何將日期轉換為時間戳?

[英]How to convert date to timestamp?

我想將日期轉換為時間戳,我的輸入是26-02-2012 我用了

new Date(myDate).getTime();

它說 NaN.. 誰能告訴我如何轉換它?

將字符串拆分為各個部分,並將它們直接提供給 Date 構造函數:

更新:

 var myDate = "26-02-2012"; myDate = myDate.split("-"); var newDate = new Date( myDate[2], myDate[1] - 1, myDate[0]); console.log(newDate.getTime());

試試這個函數,它使用Date.parse()方法並且不需要任何自定義邏輯:

function toTimestamp(strDate){
   var datum = Date.parse(strDate);
   return datum/1000;
}
alert(toTimestamp('02/13/2009 23:31:30'));

這個重構的代碼會做到這一點

let toTimestamp = strDate => Date.parse(strDate)

這適用於所有現代瀏覽器,除了 ie8-

var dtstr = "26-02-2012";
new Date(dtstr.split("-").reverse().join("-")).getTime();

這里有兩個問題。 首先,您只能在日期實例上調用 getTime。 您需要將新日期括在括號中或將其分配給變量。

其次,您需要以適當的格式向其傳遞一個字符串。

工作示例:

(new Date("2012-02-26")).getTime();

如果您來這里尋找當前時間戳

var date      = new Date();
var timestamp = date.getTime();

或者干脆

new Date().getTime();
/* console.log(new Date().getTime()); */

您只需要反轉您的日期數字並更改-,

new Date(2012,01,26).getTime(); // 02 becomes 01 because getMonth() method returns the month (from 0 to 11)

在你的情況下:

var myDate="26-02-2012";
myDate=myDate.split("-");
new Date(parseInt(myDate[2], 10), parseInt(myDate[1], 10) - 1 , parseInt(myDate[0]), 10).getTime();

PS UK 語言環境在這里無關緊要。

要將(ISO)日期轉換為Unix 時間戳,我最終得到的時間戳比需要的長 3 個字符,所以我的年份大約是 50k...

我不得不將它除以 1000: new Date('2012-02-26').getTime() / 1000

function getTimeStamp() {
       var now = new Date();
       return ((now.getMonth() + 1) + '/' + (now.getDate()) + '/' + now.getFullYear() + " " + now.getHours() + ':'
                     + ((now.getMinutes() < 10) ? ("0" + now.getMinutes()) : (now.getMinutes())) + ':' + ((now.getSeconds() < 10) ? ("0" + now
                     .getSeconds()) : (now.getSeconds())));
}

對於那些想要格式為yyyymmddHHMMSS的可讀時間戳的人

> (new Date()).toISOString().replace(/[^\d]/g,'')              // "20190220044724404"
> (new Date()).toISOString().replace(/[^\d]/g,'').slice(0, -3) // "20190220044724"
> (new Date()).toISOString().replace(/[^\d]/g,'').slice(0, -9) // "20190220"

使用示例:備份文件擴展名。 /my/path/my.file.js.20190220

您的字符串不是Date對象指定要處理的格式。 您必須自己解析它,使用像MomentJS或更舊的日期解析庫(據我所知,目前尚未維護) DateJS ,或者將其按摩成正確的格式(例如, 2012-02-29 )在要求Date解析它之前。

為什么你得到NaN :當你要求new Date(...)處理一個無效的字符串時,它會返回一個設置為無效日期的Date對象( new Date("29-02-2012").toString()返回"Invalid date" )。 在此狀態下對日期對象調用getTime()會返回NaN

/**
 * Date to timestamp
 * @param  string template
 * @param  string date
 * @return string
 * @example         datetotime("d-m-Y", "26-02-2012") return 1330207200000
 */
function datetotime(template, date){
    date = date.split( template[1] );
    template = template.split( template[1] );
    date = date[ template.indexOf('m') ]
        + "/" + date[ template.indexOf('d') ]
        + "/" + date[ template.indexOf('Y') ];

    return (new Date(date).getTime());
}

下面的代碼會將當前日期轉換為時間戳。

var currentTimeStamp = Date.parse(new Date());
console.log(currentTimeStamp);

它應該采用此標准日期格式 YYYY-MM-DD,以使用以下等式。 您可能有時間,例如:2020-04-24 16:51:56 或 2020-04-24T16:51:56+05:30。 它可以正常工作,但日期格式應該只像這個 YYYY-MM-DD。

var myDate = "2020-04-24";
var timestamp = +new Date(myDate)

第一個答案很好,但是使用 react typescript 會抱怨因為 split('') 對我來說效果更好的方法是。

parseInt((new Date("2021-07-22").getTime() / 1000).toFixed(0))

樂意效勞。

您可以使用valueOf方法

new Date().valueOf()

在某些情況下,某些日期似乎很頑固,也就是說,即使使用日期格式,例如“2022-06-29 15:16:21”,您仍然會得到 null 或 NaN。 我必須通過在空白處包含一個“T”來解決我的問題,即:

const inputDate = "2022-06-29 15:16:21";
const newInputDate = inputDate.replace(" ", "T");

const timeStamp = new Date(newInputDate).getTime();

這對我來說很好! 干杯!

其他開發人員已提供了答案,但以我自己的方式,您可以即時執行此操作,而無需創建任何用戶定義的函數,如下所示:

var timestamp = Date.parse("26-02-2012".split('-').reverse().join('-'));
alert(timestamp); // returns 1330214400000

只需對Date對象執行一些算術運算,就會將時間戳作為number返回。 這對於緊湊符號很有用。 我發現這是最容易記住的方法,因為該方法也適用於將轉換為string類型的數字轉換回number類型。

 let d = new Date(); console.log(d, d * 1);

如果您還需要添加時間new Date('2021-07-22 07:47:05.842442+00').getTime()

這也適用於沒有 Time new Date('2021-07-22 07:47:05.842442+00').getTime()

這也可以,但它不會 Accept Time new Date('2021/07/22').getTime()

最后,如果一切都不起作用,請使用這個new Date(year, month, day, hours, minutes, seconds, milliseconds)

注意月份,計數從0開始,所以Jan === 0Dec === 11

一張照片說一千個字:)

在這里,我將當前日期轉換為時間戳,然后獲取時間戳並將其轉換為當前日期,我們將展示如何將日期轉換為時間戳以及將時間戳轉換為日期。

在此處輸入圖像描述

最簡單和准確的方法是在日期之前添加一元運算符

 console.log(`Time stamp is: ${Number(+new Date())}`)

只是提醒

Date.parse("2022-08-04T04:02:10.909Z")

1659585730909

Date.parse(新日期("2022-08-04T04:02:10.909Z"))

1659585730000

+new Date(myDate)這應該將 myDate 轉換為 timeStamp

暫無
暫無

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

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