簡體   English   中英

將日期字符串轉換為ISO 8601格式字符串,最后轉換為日期對象

[英]converting a date string to ISO 8601 format string and eventually a date object

我將使其變得簡單...從帖子中獲取日期字符串為:

var str = "25/01/2014";

但是,當使用Date.parse()這樣的函數時:

var date = Date.parse (str);

我在嘗試打印時會得到NaN。

建議將這種字符串格式化為iso-8601格式的建議方法是什么,或者可以將這種字符串轉換為日期格式的任何其他方法?

有關日期字符串格式轉換的一般建議,請參見js中的將字符串轉換為日期

適用於您的特定情況:

 // Convert DD/MM/YYYY to ISO format YYYY-MM-DD: let string = "01/02/2016"; let re = /(\\d+)\\/(\\d+)\\/(\\d+)/; let date = new Date(string.replace(re, "$3-$2-$1")); console.log(date); 

說實話,您的代碼在我的系統中有效。 但是,如果您想安全起見,請分割字符串並從中創建日期對象。

var a = '25/01/2014';
var b = a.split('/');
var d = new Date(b[2],b[1],b[0]);

如果您知道提供的字符串strdd/mm/yyyy格式,則可以使用

var date= new Date( str.split( "/" ).reverse() );

保證Date.parse解析簡化的ISO-8601格式。 是否將識別其他格式取決於實現方式。 但是請注意,上面的代碼將年,月和日作為數字傳遞給構造函數,因此無需再次對其進行解析。

編輯:

我上面的代碼是錯誤的 它對我有用,因為反向數組將轉換為字符串“ 2014,01,25”,Mozilla的Date.parse恰好接受該字符串。 您需要按照@Alex Kudryashev和@le_m的建議分別傳遞參數。 甚至

Date.prototype.constructor.apply( null, array )

無法正常工作,因為Date構造函數作為函數調用時的行為有所不同。

暫無
暫無

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

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