2012-04-11 56 views
-1

我有這個腳本可以工作,但我需要更改日期字符串的格式以使其看起來不同。目前我得到:星期二2012年4月10日22時27分13秒GMT-0700(PDT)更改日期字符串並通過onclick更改DIV背景顏色

我需要的日期字符串看起來是這樣的:2012下午10時28分

4月10日,

我還需要更改DIV背景,它們在按鈕被點擊時持有輸入日期字符串。

<form> 

<input name="theDate" size="50"> 

<input type="button" value="Insert date" 
    onclick="this.form.theDate.value = new Date();"> 

</form> 
+1

很多類似的問題已經問了,例如:http:// stackoverflow.com/questions/476105/how-can-i-convert-string-to-datetime-with-format-specification-in-javascript – 2012-04-11 05:39:19

回答

1

結賬moment.js

一個輕量級(3.7k)JavaScript日期庫解析, 操縱和格式化日期。

使用moment.js ...

var today = moment(new Date()); 
today.format("MMMM D, YYYY h:m A"); // outputs "April 11, 2012 12:44 AM" 

你甚至可以做到在同一行:)

moment().format("MMMM D, YYYY h:m A"); // outputs "April 11, 2012 12:49 AM" 

因此,對於你輸入元素...

<input type="button" value="Insert date" onclick="this.form.theDate.value = moment().format('MMMM D, YYYY h:m A');"> 

另外,它值得一提的結帳date.js。我認爲這兩個庫是相輔相成的。

+0

我可以將它添加到onclick =「this.form.theDate.value = new Date ();」 – Erik 2012-04-11 05:51:37

+0

當然是!你只需要包含JavaScript庫。 – Hristo 2012-04-11 05:54:08

+0

我添加了moment.js /這是正確的嗎? onclick =「this.form.theDate.value = moment()。format(」MMMM D,YYYY h:m A「)」;對, – Erik 2012-04-11 05:55:34

0

您可以使用下面的方法獲取不同的 「時代」 -things:

For Year: date..getFullYear(); 
For Month: date.getMonth(); 
For Date: date.getDate(); 
For Hour: date.getHours(); 
For Minute: date.getMinutes(); 
    . 
    . 
    . 
    etc. (date = new Date()) 

解決方案::d

var d = new Date(), 
    y = d.getFullYear(), 
    mo = d.getMonth(), 
    da = d.getDate(), 
    h = d.getHours(), 
    m = d.getMinutes(); 

var time = m + " " + da + ", " + y + " " + h + ":" + m + ((h<12)?"AM":"PM"); 

現場演示http://jsfiddle.net/DerekL/GZ7sB/

0

你可以使用Date objectformat方法將日期格式化爲y我們喜歡(在formatter提供我所附加的鏈接)...

例子:

var d = new Date(); 
d.format('m/dd/yy'); 

有關更多信息,請參閱this link ...

+0

不,'日期'沒有格式()'。 – 2012-04-11 06:07:23

+0

@Derek在我提供的鏈接上提供了日期格式化程序... – 2012-04-11 06:16:57

0

您可以修剪出你想要的零件 -

alert(new Date()。dayString( 'Y', 'T'));

返回值:(字符串)2012年4月11日上午01時58分

String.prototype.padZero= function(len, c){ 
    var s= "", c= c || "0", len= (len || 2)- this.length; 
    while(s.length<len) s += c; 
    return s + this; 
} 

Date.daynames= ['Sunday', 'Monday', 'Tuesday', 
'Wednesday','Thursday', 'Friday', 'Saturday']; 

Date.ddmm= (function(){ 
    return Date.parse('2/6/2009')>Date.parse('6/2/2009'); 
})(); 

Date.monthnames= ['January', 'February', 'March', 'April', 'May', 
'June', 'July', 'August', 'September', 'October', 'November', 'December']; 

Date.prototype.dayString= function(wch, wch2){ 
    var D= this, A, day, M, W; 
    wch= wch? wch.toLowerCase():'y'; 
    M= Date.monthnames; 
    W= Date.daynames; 
    var A= [W[D.getDay()], ' ', M[D.getMonth()], ' ', 
    D.getDate(), ', ', D.getFullYear()]; 
    if(wch.indexOf('s')!= -1){ 
     A[0]= A[0].substring(0, 3); 
     A[2]= A[2].substring(0, 3); 
    } 
    if(Date.ddmm || /b/i.test(wch)){ 
     A.splice(2, 3, A[4], A[3], A[2]); 
    } 
    if(wch.indexOf('y')== -1) A.length= 5; 
    if(wch.indexOf('d')== -1) A.splice(0, 2); 
    day= A.join(''); 
    if(wch2) day+= ' '+D.timeString(wch2); 
    return day; 
} 
Date.prototype.timeString= function(sec){ 
    var D= this, A; 
    sec= sec || ''; 
    var h= D.getHours(); 
    var w= h<12? ' am':' pm'; 
    if(sec===sec.toUpperCase())w=w.toUpperCase(); 
    if(h>12) h-= 12; 
    else if(h== 0) h= 12; 
    A= [h, String(D.getMinutes()).padZero(2)]; 
    if(/s/i.test(sec)) A[2]= String(D.getSeconds()).padZero(2); 
    if(/ms/i.test(sec)) A[3]= String(D.getMilliseconds()).padZero(3); 
    return A.join(':')+w; 
} 
+0

jeez ...很好地完成了,但爲什麼不使用現有的庫? – Hristo 2012-04-11 06:04:57

+0

我怎麼稱呼這onclick? – Erik 2012-04-11 06:05:45

+0

@ Hristo- 1998年我寫了這個,之前有很多的JavaScript庫。 – kennebec 2012-04-11 06:20:44