2016-08-21 104 views
0

如何在不將Date對象更改爲String對象的情況下以ddmmyyyy格式獲取javascript日期?Javascript日期格式爲字符串特定格式

  • 我有一個String stringDate = 31/08/2015(在DD/MM/yyyy格式)
  • 我想獲得一個JavaScript Date對象在相同的格式,即dateObj = 31/08/2015(其中選項dateObj爲dd/mm的JavaScript的日期對象/ yyyy格式)
+0

顯示你迄今爲止試過的一些代碼? –

+1

「Date」對象的格式爲dd/mm/yyyy是什麼意思? 「日期」對象沒有這樣的格式。在內部,它們只是自UTC時代以來的毫秒數。 – JohnnyHK

回答

-1

試試這個:

var d = new Date("31/0/2015"); 
0

如何將字符串轉換形式 「DD/MM/YYYY」 上的日期對象在javascript:

var stringDate = "31/08/2015"; 

//split the string into array of date components 

stringDate = stringDate.split("/"); 

//stringDate is now ["31", "08", "2015"] 

//convert each array string value to a number, using unary plus 
//and feed these values into a new date object 

var dateObj = new Date(+stringDate[2], +stringDate[1] - 1, +stringDate[0]); 

//note that javascript month values are 0 for Jan ... 11 for Dec, need to subtract one from the month value 

而如何才能獲得窗體上的字符串「DD/MM/YYYY」從日期對象:

//a date object representing 31 Aug 2015 
var dateObject = new Date(2015, 7, 31); 

//get the date, month and year values from the date object 
var dmy = [ 
    dateObject.getDate(), 
    dateObject.getMonth() + 1, 
    dateObject.getFullYear()  
]; 

//convert to strings and pad with leading zero, if necessary 
dmy[0] = ('0' + dmy[0]).slice(-2); 
dmy[1] = ('0' + dmy[1]).slice(-2); 
dmy[2] = ('0000' + dmy[2]).slice(-4); 

//join values with `/` as delimiter 
dmy = dmy.join('/'); 

//dmy is now the string "31/08/2015" 
+0

嗨托馬斯,嘗試了你的代碼..但它提供了不是dd/mm/yyyy格式的日期對象。還有一個日期在獲得的時間戳中遞減。 – shubh

+0

嗨,詹姆斯。 Javascript日期對象沒有特定的輸出格式sych,如dd/mm/yyyy(它們將日期存儲爲表示1970年1月1日以來的毫秒數的整數,並提供了簡化日期算術的方法)。如果要將日期作爲日期對象存儲,但將其表示爲dd/mm/yyyy格式的字符串,則上述代碼將幫助您將字符串轉換爲日期對象,但需要另一個函數才能在表單上獲取字符串dd/mm/yyyy來自日期對象,因爲javascript沒有任何本地方法。 –

+0

在上面的答案中,添加了從日期對象獲取「dd/mm/yyyy」字符串表示所需的步驟。另外,請提供一些減少日期的信息。 –

0

從你的問題和我以前的答案您的意見看來,如果你是要求如下:

  1. 如何創建形式爲「DD/MM/YYYY」對字符串的JavaScript Date對象,並
  2. 如何讓這些Date對象被表示爲形式的字符串「DD /毫米/ YYYY」當您檢查/使用它們在其他代碼

的第一個任務是在我以前的答案已經解釋過,我們通過進行功能我們總結做轉換:

//create date object from string on the form "dd/mm/yyyy" 

function getDateObjectFromString(dmyString){ 
    return new Date(
     + dmyString.slice(6,10), 
     (+ dmyString.slice(3,5)) - 1, 
     + dmyString.slice(0,2) 
    ); 
} 

測試此搭配:

var dateString = "31/08/2015"; 
var dateObject = getDateObjectFromString(dateString); 

如果您在控制檯檢查dateObject或在代碼中使用它,它會顯示爲一個字符串(比你問什麼不同的格式),但是這是因爲JavaScript自動轉換大通過調用Date對象的本地toString()toValue()方法,根據上下文將對象映射到字符串表示形式(或數字表示形式)。

您可以方便地查看dateStringdateObject是不同的,而且dateObject確實有一個日期對象的屬性:

console.log(typeof dateString); //returns "string" 
console.log(typeof dateObject); //returns "object" 

console.log(dateObject.toString()); //returns a browser-dependent and timezone-dependent string 
console.log(dateObject.valueOf()); //returns the numeric date representation 

第二個任務可以使您的Date對象使用自定義.toString()方法來實現:

//custom method to get "dd/mm/yyyy" when called on a Date object 
function customDateToString(){ 
    return [ 
     ('0' + this.getDate()).slice(-2), 
     ('0' + (this.getMonth() + 1)).slice(-2), 
     ('0000' + this.getFullYear()).slice(-4) 
    ].join("/"); 
} 

我們將避免與Date.prototype搞亂,但是當我們創建日期對象可以指定該自定義.toString(),修改getDateObjectFromString功能:

function getDateObjectFromString(dmyString){ 
    var dateObject = new Date(
     + dmyString.slice(6,10), 
     (+ dmyString.slice(3,5)) - 1, 
     + dmyString.slice(0,2) 
    ); 
    dateObject.toString = customDateToString; 
    return dateObject; 
} 

現在測試:

var dateString = "31/08/2015"; 
var dateObject = getDateObjectFromString(dateString); 
console.log(dateObject); //displays "31/08/2015" 

console.log(dateObject.getDay()); // displays 1 (for Monday), showing that dateObject indeed has the properties/methods of a Date object 

我希望這回答了你的問題。