Moment js รับวันแรกและวันสุดท้ายของเดือนปัจจุบัน


141

ฉันจะรับวันและเวลาแรกและวันสุดท้ายของเดือนปัจจุบันในรูปแบบต่อไปนี้ใน moment.js ได้อย่างไร:

2559-09-01 00:00 น

ฉันสามารถรับวันที่และเวลาปัจจุบันได้ดังนี้ moment().format('YYYY-MM-DD h:m')ซึ่งจะแสดงผลในรูปแบบด้านบน

อย่างไรก็ตามฉันต้องได้รับวันที่และเวลาของวันแรกและวันสุดท้ายของเดือนปัจจุบันต้องทำอย่างไร

แก้ไข: คำถามของฉันแตกต่างจากคำถามนี้เนื่องจากถามถึงเดือนที่ระบุซึ่งผู้ใช้มีอยู่แล้วในขณะที่ฉันขอเดือนปัจจุบันพร้อมกับขอรูปแบบเฉพาะของวันที่ที่ไม่ได้กล่าวถึงในอีกรูปแบบที่เรียกว่า 'ซ้ำกัน '



1
Moment.js รองรับฟังก์ชันเพื่อรับวันแรกและวันสุดท้ายของเดือนคุณจะได้รับสำหรับเดือนปัจจุบันโดย: moment (). startOf ('month') และ moment (). endOf ('month') ฉันคิดว่าคุณควรดูคำตอบจากสิ่งนี้
Tan Le

@TanLe ใช่ แต่ผลลัพธ์นี้ออกมาในรูปแบบต่อไปนี้: Thu Sep 01 2016 00:00:00 GMT+0100 (GMT Summer Time)ฉันต้องการรูปแบบตามที่ฉันได้กล่าวไว้ในคำถามของฉัน
user3574492

ฟังก์ชันนั้นจะส่งคืนวัตถุช่วงเวลาสำหรับวันดังนั้นคุณสามารถใช้รูปแบบเพื่อส่งออกด้วยรูปแบบใดก็ได้ที่คุณต้องการ เช่น: moment (). startOf ('month'). format ('YYYY-MM-DD HH: mm')
Tan Le

@AuditeMarlow ลองดี แต่คำถามแตกต่างกันเล็กน้อยตามที่อธิบายไว้ในการแก้ไขของฉัน
user3574492

คำตอบ:


378

ในกรณีที่ใครพลาดความคิดเห็นเกี่ยวกับคำถามเดิมคุณสามารถใช้วิธีการในตัว (ใช้ได้กับ Moment 1.7):

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

1
ไม่รู้ว่าทำไมใครบางคนลบความคิดเห็นเดิมออก แต่สาเหตุที่ไม่ได้รับคำตอบเป็นเพราะโพสต์หลายเดือนหลังจากคำตอบที่ยอมรับ
user3574492

2
ขอบคุณ @ user3574492 ไม่ใช่เรื่องใหญ่ขอบคุณสำหรับคำชี้แจง - หากคุณคิดว่าคำตอบนี้ดีที่สุดฉันคิดว่ามันเป็นไปได้ที่จะเปลี่ยนเป็นคำตอบที่ยอมรับแม้ว่าจะโพสต์ในภายหลังก็ตาม
Ali Yazdani

3
moment(1, "DD");จะกลับมาในวันแรกของเดือนปัจจุบัน
Anil Vangari

36

จะมีวิธีอื่นในการดำเนินการนี้:

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

27

คุณสามารถทำได้โดยไม่ต้องใช้เวลา js

วิธีดำเนินการในโค้ด Javascript ดั้งเดิม:

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);

ผลลัพธ์นี้อยู่ในรูปแบบวันที่เริ่มต้นที่Thu Sep 01 2016 00:00:00 GMT+0100 (GMT Summer Time)ไม่อยู่ในรูปแบบที่ฉันต้องการ:2016-09-01 00:00
user3574492

1
ใช้ช่วงเวลาจัดรูปแบบวันที่ ... firstDay = moment (firstDay) .format ('MM / DD / YYYY'); lastDay = ช่วงเวลา (lastDay) .format ('MM / DD / YYYY');
Kevin Grosgojat

1
และวิธีการรับstartdateและenddateของเดือนถัดไปโดยใช้สูตรนี้?
alka vaghela

29
"คุณสามารถทำได้โดยไม่มี moment.js" ใช้ moment.js เพื่อจัดรูปแบบวันที่ ...
SteamFire

10

สมมติว่าคุณกำลังใช้ตัวเลือกช่วงวันที่เพื่อดึงวันที่ คุณสามารถทำบางสิ่งบางอย่างเพื่อให้ได้สิ่งที่คุณต้องการ

$('#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

moment startOf ()และendOf ()คือคำตอบที่คุณกำลังค้นหา .. ตัวอย่างเช่น: -

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

วันที่หนึ่งและวันสุดท้ายของเดือนปัจจุบันในช่วงเวลา 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

ง่ายๆคือเราสามารถใช้daysInMonth ()และendOf ()

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')
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.