2013-05-22 12 views
15

Dünün tarihini DD/MM/YYYY biçiminde almak için bir süredir aradık. Ben biçimi GG/AA/YYYY (SO sayesinde) bugünün tarihini olsun, BununlaDünkü tarihi Javascript formatında almak için işlev DD/AA/YYYY

var $today = new Date(); 
var $dd = $today.getDate(); 
var $mm = $today.getMonth()+1; //January is 0! 

var $yyyy = $today.getFullYear(); 
if($dd<10){$dd='0'+dd} if($mm<10){$mm='0'+$mm} $today = $dd+'/'+$mm+'/'+$yyyy; 

: İşte benim geçerli kod var. Ama bu çalıştığınızda: başka bir yere bu sitede tavsiye edildiği

var $yesterday = $today.getDate()-1; 

(linki kaybetti), ben getDate() bu nesne için bulunamadığını belirten bir hata alıyorum.

Senaryoyu Sahi ile kullanıyorum, ama Sahi'nin Javascript ile ilgili bir sorunu olmadığı için bunun bağlantılı olduğunu sanmıyorum.

Önceden teşekkür ederiz.

+0

Bu daha iyi olur: http://jsfiddle.net/LZLgN/? Tabii ki gerekli '0's doldurmanız gerekir. – Passerby

+1

Bunun nedeni, $ bugününüzün sonunda bir dizeye ("gg/aa/yyyy") atanmış olması ve bir dizenin 'getDate()' yöntemine sahip olmamasıdır. – Passerby

+3

Neden tüm garip '$'? PHP değil, biliyorsun. –

cevap

41

sorun burada buna bir dize atayarak $today yeniden atama olduğunuzu gibi görünüyor:

$today = $dd+'/'+$mm+'/'+$yyyy; 

Strings getDate yok.

Ayrıca, $today.getDate()-1, ayın 1'inci gününü size verir; Size dünün tam tarihini vermiyor. Bu deneyin:

$today = new Date(); 
$yesterday = new Date($today); 
$yesterday.setDate($today.getDate() - 1); //setDate also supports negative values, which cause the month to rollover. 

Sonra sadece yazdığın biçimlendirme kodu geçerlidir:

Çünkü son ifadenin
var $dd = $yesterday.getDate(); 
var $mm = $yesterday.getMonth()+1; //January is 0! 

var $yyyy = $yesterday.getFullYear(); 
if($dd<10){$dd='0'+dd} if($mm<10){$mm='0'+$mm} $yesterday = $dd+'/'+$mm+'/'+$yyyy; 

, $yesterday şimdi biçimlendirilmiş tarihini içeren bir String (değil Date) 'dir.

+0

Teşekkür ederim. Bu yöntem yılın her günü çalışıyor mu? – user1881815

+0

@ user1881815, Eminim yapacağım. Yılın ilk günü, bir ayın ilk günü ve şimdiki tarihi için test ettim ve bu davalarda çalıştı. – Sam

+0

Haklıydın. Çok teşekkürler! – user1881815

13

bu deneyin:

function getYesterdaysDate() { 
    var date = new Date(); 
    date.setDate(date.getDate()-1); 
    return date.getDate() + '/' + (date.getMonth()+1) + '/' + date.getFullYear(); 
} 
+0

Teşekkürler, neredeyse orada, tek sayılardan önce görünecek sıfırlara ihtiyacım var. :) – user1881815

+2

@ user1881815: Bunu deneyin date.getFullYear() + '/' + (ay <10? '0': '') + month + '/' + (day <10? '0': '') + gün; –

3

If ifadesinde $today geçersiz kılınır.

if($dd<10){$dd='0'+dd} if($mm<10){$mm='0'+$mm} $today = $dd+'/'+$mm+'/'+$yyyy; 

Artık bir Date() nesnesi değil - dolayısıyla hata.

İlgili konular