คำนวณวันสุดท้ายของเดือนใน JavaScript


277

ถ้าคุณให้0เป็นdayValueในDate.setFullYearคุณจะได้รับในวันสุดท้ายของเดือนที่ผ่านมา:

d = new Date(); d.setFullYear(2008, 11, 0); //  Sun Nov 30 2008

มีการอ้างอิงถึงพฤติกรรมนี้ที่เป็นMozilla นี่เป็นคุณสมบัติข้ามเบราว์เซอร์ที่เชื่อถือได้หรือฉันควรจะดูวิธีอื่นหรือไม่?


คุณไม่ได้หมายถึงวันสุดท้ายของเดือนที่ระบุใช่ไหม มี 30 วันในเดือนพฤศจิกายนและ 31 ในเดือนตุลาคม
Chris Serra

16
เดือนใช้ javascript เป็นศูนย์ดังนั้น 11 ธันวาคม
Greg

2
@TheCloudlessSky - ลองในคอนโซลของคุณ ... (2008,11,0) เป็นวันที่ศูนย์ของเดือนธันวาคมดังนั้นวันสุดท้ายของเดือนพฤศจิกายน
Ken

@Ken - ใช่ - ฉันไม่รู้ว่ามี "0":) ... มันเร็วเกินไปในตอนเช้า
TheCloudlessSky

คำตอบ:


424
var month = 0; // January
var d = new Date(2008, month + 1, 0);
alert(d); // last day in January

IE 6:                     Thu Jan 31 00:00:00 CST 2008
IE 7:                     Thu Jan 31 00:00:00 CST 2008
IE 8: Beta 2:             Thu Jan 31 00:00:00 CST 2008
Opera 8.54:               Thu, 31 Jan 2008 00:00:00 GMT-0600
Opera 9.27:               Thu, 31 Jan 2008 00:00:00 GMT-0600
Opera 9.60:               Thu Jan 31 2008 00:00:00 GMT-0600
Firefox 2.0.0.17:         Thu Jan 31 2008 00:00:00 GMT-0600 (Canada Central Standard Time)
Firefox 3.0.3:            Thu Jan 31 2008 00:00:00 GMT-0600 (Canada Central Standard Time)
Google Chrome 0.2.149.30: Thu Jan 31 2008 00:00:00 GMT-0600 (Canada Central Standard Time)
Safari for Windows 3.1.2: Thu Jan 31 2008 00:00:00 GMT-0600 (Canada Central Standard Time)

ความแตกต่างของผลผลิตนั้นเกิดจากความแตกต่างในการtoString()ใช้งานไม่ใช่เพราะวันที่นั้นแตกต่างกัน

แน่นอนเพียงเพราะเบราว์เซอร์ที่ระบุข้างต้นใช้ 0 เป็นวันสุดท้ายของเดือนก่อนไม่ได้หมายความว่าพวกเขาจะยังคงทำเช่นนั้นหรือเบราว์เซอร์ที่ไม่ได้ระบุไว้จะทำเช่นนั้น แต่มันให้ความน่าเชื่อถือต่อความเชื่อว่า เช่นเดียวกันในทุกเบราว์เซอร์


19
ที่ดูเหมือนว่าจะทำงานได้อย่างสมบูรณ์แบบดี จากความอยากรู้สิ่งที่คุณใช้ในการเรียกใช้จาวาสคริปต์ในเครื่องมือเหล่านี้ทั้งหมด? มีทุกอย่างที่ติดตั้งหรือเครื่องมือบางอย่าง?
neonski

5
คุณสามารถใช้ d.getDate () เพื่อรับวันจริง
rynop

35
"เพียงเพราะเบราว์เซอร์…ใช้ 0 เป็นวันสุดท้ายของเดือนก่อนไม่ได้หมายความว่าพวกเขาจะทำเช่นนั้นต่อไป" ใช่มันต้องทำโดย ECMA-262
RobG

3
โปรดทราบว่าการใช้new Dateคือเพื่อให้ได้ช้ากว่าวิธีการคำนวณอื่น ๆ ที่ไม่ได้แสดงในแผนภูมิ perf : jsperf.com/days-in-month-perf-test/6
Gone Coding

4
มันใช้งานไม่ได้สำหรับฉันบน Chrome 48.0.2564.116 บางทีวิธีนี้อาจหยุดจากการเป็น 'มาตรฐาน'
xarlymg89

77

ฉันจะใช้วันที่ตรงกับวันแรกของเดือนถัดไปและคืนวันที่จากวันก่อนหน้า:

int_d = new Date(2008, 11+1,1);
d = new Date(int_d - 1);

ตามข้อกำหนดของ ECMAScriptการใช้ตัวสร้าง "วันที่" ตามที่คุณชี้ให้เห็นนั้นถูกต้อง หลังจากใช้อัลกอริทึมที่ระบุโดยฟังก์ชัน "MakeDay" มันควรจัดการกับปัญหาอย่างดี
Pablo Cabrera

1
นี่เป็นทางออกที่ดีที่สุด IMO ฉันลองคำตอบที่ยอมรับแล้ว แต่มีข้อผิดพลาดบางอย่างเมื่อดึงข้อมูลล่าสุดของเดือนปัจจุบัน ส่งคืนวันที่วันนี้ ไม่แน่ใจว่าทำไมถึงเกิดขึ้นแม้ว่า
โกกอล

1
ฉันไม่สามารถแก้ไขข้อผิดพลาด สิ่งนี้ให้ฉันวันที่ที่ถูกต้องในเบราว์เซอร์ทั้งหมด:today = new Date(); new Date(today.getFullYear(), today.getMonth()+1, 0).toString();
orad

สิ่งนี้จะสร้างอ็อบเจกต์ Date สำหรับวันสุดท้ายของเดือนโดยมีการตั้งค่าเวลาเป็นมิลลิวินาทีสุดท้าย (เช่น 23: 59: 59.999) ดีกว่าที่จะใช้วิธีการใน OP และบันทึกขั้นตอนพิเศษและวัตถุวันที่
RobG

@RobG: ฉันเห็นด้วย! แม้ว่าวิธีแก้ปัญหาของฉันอาจจะเข้าใจได้ง่ายขึ้นเนื่องจากความคิดของการใช้ 0 สำหรับวันสุดท้ายของเดือนนั้นรู้สึกว่าค่อนข้างสับสนในความคิดของฉัน
karlipoppins

72

ฉันคิดว่านี่เป็นทางออกที่ดีที่สุดสำหรับฉัน ให้อ็อบเจกต์ Date คำนวณให้คุณ

var today = new Date();
var lastDayOfMonth = new Date(today.getFullYear(), today.getMonth()+1, 0);

การตั้งค่าพารามิเตอร์วันเป็น 0 หมายถึงหนึ่งวันน้อยกว่าวันแรกของเดือนซึ่งเป็นวันสุดท้ายของเดือนก่อนหน้า


1
ไม่เป็นไรฉันสังเกตเห็นว่าคำตอบที่เลือกเสนอมาเหมือนกัน นี่เป็นวิธีที่เร็วที่สุดและน่าเชื่อถือที่สุดโดยไม่คำนึงถึงประเภทของปฏิทิน ตัวอย่างเช่นหาก Date ใช้งานอย่างอื่นที่ไม่ใช่ปฏิทินเกรกอเรียนก็จะยังคงใช้งานได้ ดูintldate.codeplex.comสำหรับตัวอย่างของการใช้งานวัตถุวันที่ที่ไม่ใช่แบบคริสต์ศักราช
orad

1
@ orad: ระวังการอ้างสิทธิ์บางสิ่ง"เร็วที่สุด"เนื่องจากวิธีนี้ช้ากว่าตัวเลือกอื่น ๆ ใช้new Dateเป็นดังนั้นช้ามากมันไม่ได้แสดงในแผนภูมิ perf : jsperf.com/days-in-month-perf-test/6
Gone Coding

@TrueBlueAussie ตกลง ฉันคิดว่ามันเร็วกว่าเพราะมันเป็นของพื้นเมือง แต่คุณพูดถูกมันไม่เร็ว ขอบคุณสำหรับการทดสอบจริง อย่างไรก็ตามโซลูชันนี้ทำงานได้ดีที่สุดสำหรับฉันเพราะมันกระชับและอ่านได้และไม่เหมือนโซลูชันอื่น ๆ ทั้งหมดที่ไม่ได้ผูกไว้กับปฏิทินเกรโกเรียน
orad

"ไม่เหมือนกับโซลูชันอื่น ๆ ทั้งหมดที่ไม่ผูกพันกับปฏิทิน Gregorian" !!! อัลกอริทึมนี้ส่งคืนค่าเดียวกันกับของฉันสำหรับปีที่ 1-4000 jsfiddle.net/2973x9m3/3ช่วงวันที่เพิ่มเติมใดที่คุณอ้างว่าสิ่งนี้จะให้การสนับสนุน (ซึ่งจะเป็นการใช้งาน) :)
ไปที่การเข้ารหัส

1
Native JS Date ใช้ปฏิทิน Gregorian เท่านั้น แต่คุณสามารถเยาะเย้ยมันกับการใช้งานอื่น ๆ เพื่อให้ได้ปฏิทินประเภทอื่น ยกตัวอย่างเช่นดูIntlDate หากคุณมีตัวใช้เลือกวันที่ที่ใช้วัตถุวันที่เพื่อสร้างมุมมองรายเดือนมันก็ไม่สนใจว่าการใช้งานวันที่ใด ดังนั้นการใช้อินเทอร์เฟซที่แชร์ช่วยให้สามารถสลับประเภทปฏิทินที่แตกต่างกันได้โดยไม่ต้องทราบจำนวนวันในแต่ละเดือนในแต่ละเดือน
orad

25

ในแง่คอมพิวเตอร์new Date()และregular expressionการแก้ปัญหาช้า! หากคุณต้องการซับแบบเร็วสุดและซับซิคติกให้ลองหนึ่งไลเนอร์ (สมมติว่าmอยู่ในJan=1รูปแบบ) ฉันพยายามเปลี่ยนรหัสต่าง ๆ เพื่อให้ได้ประสิทธิภาพที่ดีที่สุด

เวอร์ชันที่เร็วที่สุดของฉันในปัจจุบัน:

หลังจากดูที่คำถามที่เกี่ยวข้องการตรวจสอบ Leap ปีโดยใช้ตัวดำเนินการระดับบิต (ความเร็วที่น่าทึ่ง)และค้นพบว่าหมายเลขเวทมนต์ 25 & 15 แสดงถึงอะไรฉันได้พบกับคำตอบที่ดีที่สุดนี้

function getDaysInMonth(m, y) {
    return m===2 ? y & 3 || !(y%25) && y & 15 ? 28 : 29 : 30 + (m+(m>>3)&1);
}

เมื่อพิจารณาถึงการเลื่อนบิตสิ่งนี้ถือว่าสมมติว่าm& yพารามิเตอร์ของคุณเป็นทั้งจำนวนเต็มเนื่องจากการส่งผ่านตัวเลขเป็นสตริงจะทำให้ได้ผลลัพธ์ที่แปลก

JSFiddle: http://jsfiddle.net/TrueBlueAussie/H89X3/22/

ผลลัพธ์ของ JSPerf: http://jsperf.com/days-in-month-head-to-head/5

ด้วยเหตุผลบางอย่าง(m+(m>>3)&1)มีประสิทธิภาพมากขึ้นกว่า(5546>>m&1)ในเกือบทุกเบราเซอร์

การแข่งขันความเร็วที่แท้จริงเพียงอย่างเดียวนั้นมาจาก @GitaarLab ดังนั้นฉันจึงสร้าง JSPerf แบบตัวต่อตัวเพื่อให้เราทดสอบกับ: http://jsperf.com/days-in-month-head-to-head/5


มันทำงานตามคำตอบของปีอธิกสุรทินของฉันที่นี่: จาวาสคริปต์เพื่อค้นหาปีอธิกสุรทินคำตอบนี้ที่นี่ตรวจสอบ Leap ปีโดยใช้ตัวดำเนินการระดับบิต (ความเร็วที่น่าอัศจรรย์)เช่นเดียวกับตรรกะไบนารีต่อไปนี้

บทเรียนด่วนในเดือนไบนารี:

หากคุณตีความดัชนีของเดือนที่ต้องการ (ม.ค. = 1) ในรูปแบบไบนารี่คุณจะสังเกตเห็นว่าเดือนที่มี 31 วันอาจมีบิต 3 ชัดเจนและบิต 0 ตั้งหรือบิต 3 ตั้งและบิต 0 ชัดเจน

Jan = 1  = 0001 : 31 days
Feb = 2  = 0010
Mar = 3  = 0011 : 31 days
Apr = 4  = 0100
May = 5  = 0101 : 31 days
Jun = 6  = 0110
Jul = 7  = 0111 : 31 days
Aug = 8  = 1000 : 31 days
Sep = 9  = 1001
Oct = 10 = 1010 : 31 days
Nov = 11 = 1011
Dec = 12 = 1100 : 31 days

นั่นหมายความว่าคุณสามารถเปลี่ยนค่า 3 สถานที่ที่มี>> 3, XOR บิตกับต้นฉบับ^ mและดูว่าผลที่ได้คือ1หรือ0 ในตำแหน่งบิต 0& 1ใช้ หมายเหตุ: ปรากฎว่า+มันเร็วกว่า XOR ( ^) เล็กน้อยและ(m >> 3) + mให้ผลลัพธ์เดียวกันในบิต 0

ผลลัพธ์ JSPerf : http://jsperf.com/days-in-month-perf-test/6


อัลโก้ดั้งเดิมและประวัติเต็ม (ดูความคิดเห็น): stackoverflow.com/questions/1810984/number-of-days-in-any-month/ …ตามด้วยstackoverflow.com/questions/1810984/number-of-days-in-any - เดือน / …
GitaarLAB

1
@GitaarLAB: คุณได้รับการกล่าวถึงแล้วและนี่ก็ไม่เคยเหมือนกันกับคุณอย่างที่คุณรู้ การอัปเดตอัลกอริทึมของกันและกันเพิ่มขึ้นไม่เหมือนกันกับ "algo ดั้งเดิม" ฉันใช้ความพยายามอย่างมากในคำตอบนี้ด้วยเช่นกัน: P
Gone Coding

@TrueBlueAussie: ฉันแค่ต้องการชี้ผู้อ่านในอนาคตไปยังสมบัติของข้อมูลเพิ่มเติมของเรา (ฉันเชื่อมโยงคำตอบของเราทั้งสองเพื่อให้ทุกคนที่ใส่ใจหรือต้องการที่จะไปอีกที่สามารถดูประวัติการแก้ไขของเราเมื่อเราทำอะไรและทำไม ) ฉันยังจำได้ว่าเรารักการแข่งขันตลอดทั้งวัน! :)รุ่นคำตอบแรกที่ฉันโพสต์นั้นมีชุดวงเล็บที่ไม่จำเป็นซึ่งถูกลบออก (ซึ่งฉันให้เครดิตคุณ) เพื่อให้เราสามารถโกนอักขระและจบลงด้วยชุดนี้ ฉันยังคงขอบคุณสำหรับความสนุกในวันนั้นไชโย!
GitaarLAB

1
โปรดระบุว่าyและmตัวแปรต้องเป็นจำนวนเต็มไม่ใช่สตริง! มันทำให้การคำนวณผิดพลาดยกตัวอย่างเช่นสำหรับเดือนกุมภาพันธ์ที่คืน 30 ฉันต้องใช้parseInt()ฟังก์ชั่นเพื่อให้มันทำงาน
แทน

21

เพื่อนร่วมงานของฉันสะดุดกับสิ่งต่อไปนี้ซึ่งอาจเป็นวิธีที่ง่ายกว่า

function daysInMonth(iMonth, iYear)
{
    return 32 - new Date(iYear, iMonth, 32).getDate();
}

ถูกขโมยจาก http://snippets.dzone.com/posts/show/2099


2
ไนเจลปรับเปลี่ยนสิ่งนี้ให้เป็นโซลูชั่นที่กระชับยิ่งขึ้น ดูโพสต์ของเขา
orad

เดือนมีค่าเป็นศูนย์กล่าวคือ Jan = 0 เหมือนกับ getMonth ()
Moos

16

การปรับเปลี่ยนเล็กน้อยเพื่อแก้ไขปัญหาโดยlebreeze :

function daysInMonth(iMonth, iYear)
{
    return new Date(iYear, iMonth, 0).getDate();
}

นี้ควรจะเป็นreturn new Date(iYear, 1 + iMonth, 0).getDate();ที่จะเทียบเท่ากับการแก้ปัญหาของ @ lebreeze
Moos

6

ฉันเพิ่งต้องทำสิ่งที่คล้ายกันนี้คือสิ่งที่ฉันมาด้วย:

/**
* Returns a date set to the begining of the month
* 
* @param {Date} myDate 
* @returns {Date}
*/
function beginningOfMonth(myDate){    
  let date = new Date(myDate);
  date.setDate(1)
  date.setHours(0);
  date.setMinutes(0);
  date.setSeconds(0);   
  return date;     
}

/**
 * Returns a date set to the end of the month
 * 
 * @param {Date} myDate 
 * @returns {Date}
 */
function endOfMonth(myDate){
  let date = new Date(myDate);
  date.setMonth(date.getMonth() +1)
  date.setDate(0);
  date.setHours(23);
  date.setMinutes(59);
  date.setSeconds(59);
  return date;
}

ส่งมันเป็นวันที่และจะส่งคืนวันที่ที่กำหนดให้เริ่มต้นเดือนหรือสิ้นเดือน

begninngOfMonthฟังก์ชั่นที่ค่อนข้างอธิบายตนเอง แต่สิ่งที่เกิดขึ้นในในendOfMonthฟังก์ชั่นที่ฉัน incrementing เดือนในเดือนถัดไปและจากนั้นใช้setDate(0)เพื่อย้อนกลับวันที่จะเป็นวันสุดท้ายของเดือนก่อนหน้าซึ่งเป็นส่วนหนึ่งของ setDate spec:

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/setDate https://www.w3schools.com/jsref/jsref_setdate.asp

จากนั้นฉันจะตั้งค่าชั่วโมง / นาที / วินาทีให้เป็นตอนท้ายของวันดังนั้นหากคุณใช้ API บางอย่างที่คาดว่าจะมีช่วงวันที่คุณจะสามารถจับภาพทั้งหมดของวันสุดท้ายได้ ส่วนนั้นอาจไปไกลกว่าที่โพสต์ต้นฉบับร้องขอ แต่อาจช่วยให้คนอื่นมองหาโซลูชันที่คล้ายกัน

แก้ไข: คุณสามารถใช้ไมล์พิเศษและตั้งค่ามิลลิวินาทีด้วยsetMilliseconds()หากคุณต้องการความแม่นยำเป็นพิเศษ


4

ลองอันนี้.

lastDateofTheMonth = new Date(year, month, 0)

ตัวอย่าง:

new Date(2012, 8, 0)

เอาท์พุท:

Date {Fri Aug 31 2012 00:00:00 GMT+0900 (Tokyo Standard Time)}

5
อย่างไรก็ตามโปรดจำไว้ว่าเดือนนั้นเป็นแบบ zero-based ดังนั้นผ่าน "8" เนื่องจากเดือนนี้เป็นเดือนกันยายนไม่ใช่สิงหาคม
Steve J

3

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

var d = new Date(2012,02,0);
var n = d.getDate();
alert(n);

1
ระวังด้วยเลข 0 ที่อยู่หน้า "2" ซึ่งจะถูกตีความว่าเป็นเลขฐานแปด
Walfrat

1

อันนี้ใช้ได้ดี:

Date.prototype.setToLastDateInMonth = function () {

    this.setDate(1);
    this.setMonth(this.getMonth() + 1);
    this.setDate(this.getDate() - 1);

    return this;
}

1

นี่จะให้เดือนปัจจุบันกับคุณเป็นวันแรกและวันสุดท้าย

หากคุณต้องการเปลี่ยน 'ปี' ลบ d.getFullYear () และตั้งปีของคุณ

หากคุณต้องการเปลี่ยน 'เดือน' ลบ d.getMonth () และตั้งปีของคุณ

var d = new Date();
var days = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"];
var fistDayOfMonth = days[(new Date(d.getFullYear(), d.getMonth(), 1).getDay())];
	var LastDayOfMonth = days[(new Date(d.getFullYear(), d.getMonth() + 1, 0).getDay())]; 
console.log("First Day :" + fistDayOfMonth); 
console.log("Last Day:" + LastDayOfMonth);
alert("First Day :" + fistDayOfMonth); 
alert("Last Day:" + LastDayOfMonth);


1

ลองสิ่งนี้:

function _getEndOfMonth(time_stamp) {
    let time = new Date(time_stamp * 1000);
    let month = time.getMonth() + 1;
    let year = time.getFullYear();
    let day = time.getDate();
    switch (month) {
        case 1:
        case 3:
        case 5:
        case 7:
        case 8:
        case 10:
        case 12:
            day = 31;
            break;
        case 4:
        case 6:
        case 9:
        case 11:
            day = 30;
            break;
        case 2:
            if (_leapyear(year))
                day = 29;
            else
                day = 28;
            break
    }
    let m = moment(`${year}-${month}-${day}`, 'YYYY-MM-DD')
    return m.unix() + constants.DAY - 1;
}

function _leapyear(year) {
    return (year % 100 === 0) ? (year % 400 === 0) : (year % 4 === 0);
}

1

ฟังก์ชันด้านล่างให้วันสุดท้ายของเดือน:

function getLstDayOfMonFnc(date) {
  return new Date(date.getFullYear(), date.getMonth(), 0).getDate()
}

console.log(getLstDayOfMonFnc(new Date(2016, 2, 15))) // Output : 29
console.log(getLstDayOfMonFnc(new Date(2017, 2, 15))) // Output : 28
console.log(getLstDayOfMonFnc(new Date(2017, 11, 15))) // Output : 30
console.log(getLstDayOfMonFnc(new Date(2017, 12, 15))) // Output : 31

ในทำนองเดียวกันเราสามารถรับวันแรกของเดือน:

function getFstDayOfMonFnc(date) {
  return new Date(date.getFullYear(), date.getMonth(), 1).getDate()
}

console.log(getFstDayOfMonFnc(new Date(2016, 2, 15))) // Output : 1


0
function getLastDay(y, m) {
   return 30 + (m <= 7 ? ((m % 2) ? 1 : 0) : (!(m % 2) ? 1 : 0)) - (m == 2) - (m == 2 && y % 4 != 0 || !(y % 100 == 0 && y % 400 == 0)); 
}

0
const today = new Date();

let beginDate = new Date();

let endDate = new Date();

// fist date of montg

beginDate = new Date(

  `${today.getFullYear()}-${today.getMonth() + 1}-01 00:00:00`

);

// end date of month 

// set next Month first Date

endDate = new Date(

  `${today.getFullYear()}-${today.getMonth() + 2}-01 :23:59:59`

);

// deducting 1 day

endDate.setDate(0);

0

กำหนดเดือนที่คุณต้องการวันที่แล้วตั้งวันเป็นศูนย์ดังนั้นเดือนเริ่มต้นในวันที่ 1 - 31 ในฟังก์ชั่นวันที่จากนั้นรับวันสุดท้าย ^^

var last = new Date(new Date(new Date().setMonth(7)).setDate(0)).getDate();
console.log(last);


0

นี่คือคำตอบที่อนุรักษ์ GMT และเวลาของวันที่เริ่มต้น

var date = new Date();

var first_date = new Date(date); //Make a copy of the date we want the first and last days from
first_date.setUTCDate(1); //Set the day as the first of the month

var last_date = new Date(first_date); //Make a copy of the calculated first day
last_date.setUTCMonth(last_date.getUTCMonth() + 1); //Add a month
last_date.setUTCDate(0); //Set the date to 0, this goes to the last day of the previous month

console.log(first_date.toJSON().substring(0, 10), last_date.toJSON().substring(0, 10)); //Log the dates with the format yyyy-mm-dd


0

ฉันรู้ว่ามันเป็นแค่เรื่องของความหมาย แต่ฉันก็ใช้มันในรูปแบบนี้

var lastDay = new Date(new Date(2008, 11+1,1) - 1).getDate();
console.log(lastDay);

เนื่องจากฟังก์ชั่นได้รับการแก้ไขจากการโต้แย้งภายในออกไปด้านนอกมันทำงานเหมือนกัน

จากนั้นคุณสามารถแทนที่ปีและเดือน / ปีด้วยรายละเอียดที่จำเป็นไม่ว่าจะเป็นจากวันที่ปัจจุบัน หรือเฉพาะเดือน / ปี


0

หากคุณต้องการสิ้นเดือนที่แน่นอนในหน่วยไมล์ (ตัวอย่างเช่นในการประทับเวลา):

d = new Date()
console.log(d.toString())
d.setDate(1)
d.setHours(23, 59, 59, 999)
d.setMonth(d.getMonth() + 1)
d.setDate(d.getDate() - 1)
console.log(d.toString())

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