簡體   English   中英

Javascript將字符串轉換為日期

[英]Javascript convert string to date

如何將類似“ 20150415”的字符串轉換為格式為“ 2015年4月15日”的日期? 我已經閱讀了幾個示例,但是它們都包含用“-”或“ /”進行的拆分,但是這些不適用於我的情況。

這是我當前的代碼:

var d = parseInt(document.getElementById('date').value);
d =  new Date(d[4], d[2] - 1, d[2]);
document.getElementById('date').value = d;  

任何幫助將非常感激。

看來您有一個格式"YYYYMMDD"字符串 要獲取各個部分,只需提取子字符串。 一種方法是使用正則表達式:

> "20150415".match(/(\d{4})(\d{2})(\d{2})/)
["20150415", "2015", "04", "15"]

然后,您可以將各個部分(年,月,日)傳遞給Date構造函數。

但是,請注意,JavaScript不支持格式化日期。 為此,您可能要使用一個庫。 請參閱在哪里可以找到有關在JavaScript中格式化日期的文檔?

盡管@“ Felix Kling”的解決方案更好,但我提出了一個簡單的解決方案:

var d = "20150415";
//Extract 4 first letters and convert to integer, similarly with month and day
var year = parseInt(d.substr(0,4));    
//subtract one since the index of the months begin in zero (january=0)
var month = parseInt(d.substr(4,2))-1;
var day = parseInt(d.substr(6,2));
d =  new Date(year, month, day); // d store expected result

這是一個日期格式化程序,它使用字符串'20150415'並返回字符串'April 4, 2015' '20150415' 'April 4, 2015' 您可以通過修改DateFormat.toLong的最后一行來調整日期格式。

var DateFormat = {
  months: ['January', 'February', 'March', 'April', 'May', 'June',
           'July', 'August', 'September', 'October', 'November', 'December'],
  toLong: function toLongDate(s) {  // s is a string like '20150415'
    var year = parseInt(s.substring(0, 4), 10),
        month = DateFormat.months[parseInt(s.substring(4, 6), 10) - 1],
        day = parseInt(s.substring(6), 10);
    return month + ' ' + day + ', ' + year;
  }
};

// A small test.
alert(DateFormat.toLong('20150415'));

請注意,我將第二個參數傳遞給parseInt以指示該字符串表示的數字以10為底。如果您未指定以10為底,則可以將數字0開頭的字符串解析為以8為底。

您可以在Mozilla開發人員網絡上的JavaScript文檔中閱讀有關此內容的信息

如果輸入字符串以“ 0”開頭,則基數為8(八進制)或10(十進制)。 選擇哪個基數取決於實現。 ECMAScript 5指定使用10(十進制),但並非所有瀏覽器都支持。 因此,在使用parseInt時始終指定一個基數。

嘗試這個:

var months = ['January', 'February', 'March', 'April', 'May', 'June',
           'July', 'August', 'September', 'October', 'November', 'December'];
var fmt = function(str) {
  var arr = str.match(/^(\d{4})(\d{2})(\d{2})$/);
  arr.splice(0, 1);
  arr[1] = months[+(arr[1]) - 1];
  return arr.join(", ");
};

alert(fmt('20150412'));//"2015, April, 12"

暫無
暫無

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

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