An js mevcut ayın ilk ve son gününü alır


141

Moment.js'de şu formatta geçerli ayın ilk ve son gününü ve saatini nasıl alabilirim:

2016-09-01 00:00

Şu anki tarih ve saati şu şekilde alabilirim: moment().format('YYYY-MM-DD h:m')yukarıdaki formatta çıkacak.

Ancak bunu yapmanın bir yolu var mı? İçinde bulunduğum ayın ilk ve son gününün tarihini ve saatini almam gerekiyor mu?

DÜZENLEME: Benim sorum farklıdır bu , belirli bir ay için sorar çünkü için soruyorum oysa kullanıcı zaten sahip olduğu tek geçerli yinelenen' sözde diğer bahsedilmeyen tarihten belirli bir biçimde soran ile birlikte ayda '.



1
Moment.js, ayın ilk ve son gününü alma işlevini destekler, bunu geçerli ay için şu şekilde alabilirsiniz: moment (). StartOf ('month') ve moment (). EndOf ('month'). Sana gelen yanıtı görmek gerektiğini düşünüyorum bu
Tan Le

@TanLe Evet ama bu şu formatta çıktı: Thu Sep 01 2016 00:00:00 GMT+0100 (GMT Summer Time)
Sorumda

Bu fonksiyon gün için moment nesnesini döndürür, böylece istediğiniz formatta çıktı almak için formatı kullanabilirsiniz. Gibi: moment (). StartOf ('month']. Format ('YYYY-MM-DD SS: mm').
Tan Le

@AuditeMarlow Güzel deneyin ama benim düzenlememde açıklandığı gibi sorular biraz farklı.
user3574492

Yanıtlar:


376

Herhangi birinin orijinal sorudaki yorumları kaçırması durumunda, yerleşik yöntemleri kullanabilirsiniz (Moment 1.7'den itibaren çalışır):

const startOfMonth = moment().startOf('month').format('YYYY-MM-DD hh:mm');
const endOfMonth   = moment().endOf('month').format('YYYY-MM-DD hh:mm');

1
Birinin orijinal yorumları neden sildiğini bilmiyorum, ancak bunun kabul edilen cevap olmamasının nedeni, kabul edilen cevaptan aylar sonra gönderilmiş olmasıdır.
user3574492

2
teşekkürler @ user3574492 önemli bir şey değil, açıklama için teşekkürler - eğer bu cevabın en iyisi olduğunu düşünüyorsanız, daha sonra gönderilmiş olsa bile kabul edilen cevaba değiştirmenin mümkün olduğunu düşünüyorum.
Ali Yazdani

3
moment(1, "DD");mevcut ayın ilk günü dönecek
Anil Vangari

35

Bunu yapmanın başka bir yolu olabilir:

var begin = moment().format("YYYY-MM-01");
var end = moment().format("YYYY-MM-") + moment().daysInMonth();

27

Bunu moment.js olmadan yapabilirsiniz

Bunu yerel Javascript kodunda yapmanın bir yolu:

var date = new Date(), y = date.getFullYear(), m = date.getMonth();
var firstDay = new Date(y, m, 1);
var lastDay = new Date(y, m + 1, 0);

firstDay = moment(firstDay).format(yourFormat);
lastDay = moment(lastDay).format(yourFormat);

Bu, istediğim biçimde Thu Sep 01 2016 00:00:00 GMT+0100 (GMT Summer Time)olmayan varsayılan tarih biçiminde çıktılar :2016-09-01 00:00
user3574492

1
Tarihi biçimlendirmek için anı kullanın ... ilkGün = an (ilkGün) .format ('AA / GG / YYYY'); lastDay = moment (lastDay) .format ('AA / GG / YYYY');
Kevin Grosgojat 01

1
ve nasıl elde etmek startdateve enddategelecek ayın bu formülü kullanarak?
alka vaghela

29
"Bunu moment.js olmadan yapabilirsiniz" tarihi biçimlendirmek için moment.js kullanır ...
SteamFire

10

Tarihleri ​​almak için bir Tarih aralığı Seçici kullandığınızı varsayarsak. İstediğini elde etmek gibi bir şey yapabilirsin.

$('#daterange-btn').daterangepicker({
            ranges: {
                'Today': [moment(), moment()],
                'Yesterday': [moment().subtract(1, 'days'), moment().subtract(1, 'days')],
                'Last 7 Days': [moment().subtract(6, 'days'), moment()],
                'Last 30 Days': [moment().subtract(29, 'days'), moment()],
                'This Month': [moment().startOf('month'), moment().endOf('month')],
                'Last Month': [moment().subtract(1, 'month').startOf('month'), moment().subtract(1, 'month').endOf('month')]
            },
            startDate: moment().subtract(29, 'days'),
            endDate: moment()
        }, function (start, end) {
      alert( 'Date is between' + start.format('YYYY-MM-DD h:m') + 'and' + end.format('YYYY-MM-DD h:m')}

9

an startOf () ve endOf () aradığınız yanıttır .. Örneğin: -

moment().startOf('year');    // set to January 1st, 12:00 am this year
moment().startOf('month');   // set to the first of this month, 12:00 am
moment().startOf('week');    // set to the first day of this week, 12:00 am
moment().startOf('day');     // set to 12:00 am today

1

Şu anki ayın ilk ve son tarihi moment.js

console.log("current month first date");
    const firstdate = moment().startOf('month').format('DD-MM-YYYY');
console.log(firstdate);

console.log("current month last date");
    const lastdate=moment().endOf('month').format("DD-MM-YYYY"); 
console.log(lastdate); 

1

Basit olduğu gibi, daysInMonth () ve endOf () kullanabiliriz.

const firstDay = moment('2016-09-15 00:00', 'YYYY-MM-DD h:m').startOf('month').format('D')
const lastDay = moment('2016-09-15 00:00', 'YYYY-MM-DD h:m').endOf('month').format('D')
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.