2013-02-04 18 views
11

Bu tarihte dize olarak bir api'den ayrıştırılmış bir tarihim var: DD-AA-YYYY, ancak bazen tarih DD-M-YYYY veya D-M-YYYY'dir. ÖrneğinJS Tarih: Her bir günün veya ayın başına 0 ekle

:

4-1-2013 veya 10-10-2013 veya 7-4-2013

yıl her 4 basamak ama gün ya da aylar bazen bir rakam alır. El ile (JS ile) her bir basamağın önüne 0 nasıl ekleyebilirim? (. Örn = 412013 2013/04/01) - ''

ben kaldırmak duyuyorum böylece bazı hesaplamalar için moment.js kullanıyorum tam sayı almak için

date.replace("-", "") 

kullanarak bu yüzden kullanabilirsiniz moment.js ile ama eğer tek bir rakamsa, her şey berbat olur.

+1

Detaylandırır mısınız * nasıl * nasıl "berbat" oluyor? Moment.js API bu formatları destekler. Eğer verirseniz: 'moment ('4-1-2013', 'D-M-YYYY')' 4 Ocak 2013 olarak yorumlayacaktır. – founddrama

cevap

18

Sen dizelerinizi bu şekilde normalleştirebilirsiniz:

herhangi bir "kelime" alacak
date = date.replace(/\b(\d{1})\b/g, '0$1'); 

bu sadece tek bir rakamdır ve sıfır getirebilirsiniz. Her - Eğer .replace ait regexp'in sürümünü kullanmanız gerekir yerini global olarak

Not - Yalnızca kullandım dize sürümünü nedenle ilk geçtiği yerini alır:

date = date.replace(/\b(\d{1})\b/g, '0$1').replace(/-/g, ''); 

size gereken her şeyi yapacağız.

0
var day = new Date(); 
day = day.getDay(); 
if(day.toString().length <= 1) { 
    day = '0' + day; 
} 

Aynı ay boyunca da kullanabilirsiniz. Dize dönüştürmek için ihtiyacın olduğundan emin değilim, ama incitmez.

+1

Aldığım tarihler dizgiler olarak çalışırdı. Day.getDay() öğesini tanımlayamıyorsunuz. 7-4-2013 kelimesinin bir kelime olduğunu düşünün. – ClydeM

2

Tarih değişkeni String biçimindeyse (örneğin input[type=date]'dan itibaren), veri bileşenini tek öğelere ayırmanız gerekir.

date = date.split('-'); 

sonra kontrol hem

day = date[0].length==1 ? "0"+date[0] : date[0]; 
month = date[1].length==1 ? "0"+date[1] : date[1]; 

sonra arzu bir biçime geri onları bir arada olsun günün ve ayın uzunluğu

date = ""+day+month+date[2]; 

Çalışma örneği: http://jsfiddle.net/dzXPE/

6

Moment.js, biçimleri tire işaretleriyle destekler; bu nedenle, herhangi bir dizeyi işlemeye bile gerek duymazsınız.

moment('4-1-2013', 'MM-DD-YYYY').format("MMDDYYYY"); // 04012013 
moment('10-10-2013', 'MM-DD-YYYY').format("MMDDYYYY"); // 10102013 
İlgili konular