Moment.js kullanarak tarihi biçimlendirme ve günleri çıkarma


122

DD-MM-YYYYMoment.js kullanarak bir değişkenin dünün tarihini tutmasını istiyorum. Yani bugün 15-04-2015 ise, bir gün çıkarmak ve 14-4-2015'e sahip olmak istiyorum.

Bunun gibi birkaç kombinasyon denedim:

startdate = moment().format('DD-MM-YYYY');
startdate.subtract(1, 'd');

ve bu:

startdate = moment().format('DD-MM-YYYY').subtract(1, 'd');

ve ayrıca bu:

startdate = moment();
startdate.subtract(1, 'd');
startdate.format('DD-MM-YYYY')

Ama anlamıyorum ...


Biçimlendirmeden önce çıkarmayı denediniz mi? Biçimlendirmek size sadece bir dize verir ...
ndugger

an (). sadece "d" yerine çıkar (10, "gün") olabilir mi?
leopik

"Tut" Dünkü bir şekilde tarih tarih ve bunu göstermek için gerektiğinde biçimlendirilmiş bir dize dönüştürün.
Sivri

@NickDugger Bu soruda bir hata yaptım, son denemede startdate = moment () demeli; ilk satırda. Şimdi düzenledim teşekkürler
beaumondo

format()onu bir dizge yapan işlevdir. Bunu en son yapmalısın.
jwatts1980

Yanıtlar:


210

Birden çok tuhaflığın oluyor. İlki gönderinizde düzenlendi, ancak yöntemlerin çağrılma sırası ile ilgisi vardı.

.formatbir dize döndürür. String'in bir subtractmetodu yok.

İkinci sorun, günü çıkarmanız, ancak bunu bir değişken olarak kaydetmemenizdir.

O halde kodunuz şöyle görünmelidir:

var startdate = moment();
startdate = startdate.subtract(1, "days");
startdate = startdate.format("DD-MM-YYYY");

Ancak, bunu birbirine zincirleyebilirsiniz; bu şöyle görünür:

var startdate = moment().subtract(1, "days").format("DD-MM-YYYY");

Aradaki fark, başlangıç ​​tarihinde yaptığınız değişikliklerin başlangıç ​​tarihini belirlememizdir, çünkü an yıkıcıdır.


13
moment.js subtractaslında yıkıcıdır. "Zamanı çıkararak orijinal anı değiştirir". Buraya bakın: momentjs.com/docs/#/manipulating/subtract
docksteaderluke


5

Bunu dene:

var duration = moment.duration({'days' : 1});
moment().subtract(duration).format('DD-MM-YYYY');

Bu size verecek 14-04-2015- bugün 15-04-2015

Alternatif olarak, momentjs sürümünüz 2.8.0'dan küçükse, şunları kullanabilirsiniz:

startdate = moment().subtract('days', 1).format('DD-MM-YYYY');

Bunun yerine:

startdate = moment().subtract(1, 'days').format('DD-MM-YYYY');

3

startdate = moment().subtract(1, 'days').startOf('day')


3
var date = new Date();

var targetDate = moment(date).subtract(1, 'day').toDate(); // date object

Şimdi, bu tarihi nasıl görmek istediğinizi biçimlendirebilir veya bu tarihi başka bir tarihle karşılaştırabilirsiniz.

toDate () işlevi noktadır.


2

Sanırım bu son denemede yakaladınız, sadece dizeyi yakalamanız gerekiyor .. Chrome konsolunda ..

startdate = moment();
startdate.subtract(1, 'd');
startdate.format('DD-MM-YYYY');
"14-04-2015"

startdate = moment();
startdate.subtract(1, 'd');
myString = startdate.format('DD-MM-YYYY');
"14-04-2015"
myString
"14-04-2015"

2

Açısal js momentinde = "^ 1.3.0"

moment('15-01-1979', 'DD-MM-YYYY').subtract(1,'days').format(); //14-01-1979
or
moment('15-01-1979', 'DD-MM-YYYY').add(1,'days').format(); //16-01-1979
``


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.