Saya perlu menghitung tanggal JS yang diberikan tahun = 2014 dan bulan = 9 (September 2014).
Saya mencoba ini:
var moment = require('moment');
var startDate = moment( year+'-'+month+'-'+01 + ' 00:00:00' );
var endDate = startDate.endOf('month');
console.log(startDate.toDate());
console.log(endDate.toDate());
Kedua log menunjukkan:
Tue Sep 30 2014 23:59:59 GMT+0200 (CEST)
Tue Sep 30 2014 23:59:59 GMT+0200 (CEST)
Tanggal akhir benar tapi ... mengapa tanggal mulai tidak?
javascript
momentjs
Fabio B.
sumber
sumber
moment
idempoten sehingga Anda juga dapat menggunakanendDate = moment(starDate).endOf("month")
^. ^moment(<value>)
. Memperbarui contoh untuk menggunakan beberapa fungsi yang lebih pendek.add(-1,"month")
tidak berfungsi saat bulan Januari dan Anda ingin mendapatkan bulan tahun lalu.Anda dapat menggunakan ini secara langsung untuk akhir atau tanggal mulai bulan tersebut
new moment().startOf('month').format("YYYY-DD-MM"); new moment().endOf("month").format("YYYY-DD-MM");
Anda dapat mengubah format dengan menentukan format baru
sumber
Saat Anda menggunakan,
.endOf()
Anda memutasi objek yang dipanggil, jadistartDate
menjadi 30 SepAnda harus menggunakan
.clone()
untuk membuat salinannya daripada mengubahnyavar startDate = moment(year + '-' + month + '-' + 01 + ' 00:00:00'); var endDate = startDate.clone().endOf('month'); console.log(startDate.toDate()); console.log(endDate.toDate()); Mon Sep 01 2014 00:00:00 GMT+0700 (ICT) Tue Sep 30 2014 23:59:59 GMT+0700 (ICT)
sumber
Coba kode berikut:
const moment=require('moment'); console.log("startDate=>",moment().startOf('month').format("YYYY-DD-MM")); console.log("endDate=>",moment().endOf('month').format("YYYY-DD-MM"));
sumber
Jangan benar-benar berpikir ada beberapa metode langsung untuk mendapatkan hari terakhir tetapi Anda dapat melakukan sesuatu seperti ini:
var dateInst = new moment(); /** * adding 1 month from the present month and then subtracting 1 day, * So you would get the last day of this month */ dateInst.add(1, 'months').date(1).subtract(1, 'days'); /* printing the last day of this month's date */ console.log(dateInst.format('YYYY MM DD'));
sumber
startDate Anda adalah hari pertama setiap bulan, Dalam hal ini kita dapat menggunakan
var endDate = moment(startDate).add(1, 'months').subtract(1, 'days');
Semoga ini membantu!!
sumber
var d = new moment(); var startMonth = d.clone().startOf('month'); var endMonth = d.clone().endOf('month'); console.log(startMonth, endMonth);
dokter
sumber
const year = 2014; const month = 09; // months start at index 0 in momentjs, so we subtract 1 const startDate = moment([year, month - 1, 01]).format("YYYY-MM-DD"); // get the number of days for this month const daysInMonth = moment(startDate).daysInMonth(); // we are adding the days in this month to the start date (minus the first day) const endDate = moment(startDate).add(daysInMonth - 1, 'days').format("YYYY-MM-DD"); console.log(`start date: ${startDate}`); console.log(`end date: ${endDate}`);
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.20.1/moment.min.js"> </script>
sumber
const dates = getDatesFromDateRange("2014-05-02", "2018-05-12", "YYYY/MM/DD", 1); console.log(dates); // you get the whole from-to date ranges as per parameters var onlyStartDates = dates.map(dateObj => dateObj["to"]); console.log(onlyStartDates); // moreover, if you want only from dates then you can grab by "map" function function getDatesFromDateRange( startDate, endDate, format, counter ) { startDate = moment(startDate, format); endDate = moment(endDate, format); let dates = []; let fromDate = startDate.clone(); let toDate = fromDate.clone().add(counter, "month").startOf("month").add(-1, "day"); do { dates.push({ "from": fromDate.format(format), "to": ( toDate < endDate ) ? toDate.format(format) : endDate.format(format) }); fromDate = moment(toDate, format).add(1, "day").clone(); toDate = fromDate.clone().add(counter, "month").startOf("month").add(-1, "day"); } while ( fromDate < endDate ); return dates; }
Harap dicatat, .clone () sangat penting di momentjs lain itu akan menimpa nilainya. Sepertinya dalam kasus Anda.
Ini lebih umum, untuk mendapatkan banyak tanggal yang jatuh di antara tanggal.
sumber
Kode berikut seharusnya berfungsi:
$('#reportrange').daterangepicker({ startDate: start, endDate: end, ranges: { 'Hoy': [moment(), moment()], 'Ayer': [moment().subtract(1, 'days'), moment().subtract(1, 'days')], 'Ultimos 7 dias': [moment().subtract(6, 'days'), moment()], 'Ultimos 30 dias': [moment().subtract(29, 'days'), moment()], 'Mes actual': [moment().startOf('month'), moment().endOf('month')], 'Ultimo mes': [moment().subtract(1, 'month').startOf('month'), moment().subtract(1, 'month').endOf('month')], 'Enero': [moment().month(0).startOf('month') , moment().month(0).endOf('month')], 'Febrero': [moment().month(1).startOf('month') , moment().month(1).endOf('month')], 'Marzo': [moment().month(2).startOf('month') , moment().month(2).endOf('month')], 'Abril': [moment().month(3).startOf('month') , moment().month(3).endOf('month')], 'Mayo': [moment().month(4).startOf('month') , moment().month(4).endOf('month')], 'Junio': [moment().month(5).startOf('month') , moment().month(5).endOf('month')], 'Julio': [moment().month(6).startOf('month') , moment().month(6).endOf('month')], 'Agosto': [moment().month(7).startOf('month') , moment().month(7).endOf('month')], 'Septiembre': [moment().month(8).startOf('month') , moment().month(8).endOf('month')], 'Octubre': [moment().month(9).startOf('month') , moment().month(9).endOf('month')], 'Noviembre': [moment().month(10).startOf('month') , moment().month(10).endOf('month')], 'Diciembre': [moment().month(11).startOf('month') , moment().month(11).endOf('month')] } }, cb);
sumber
Coba kode berikut:
moment(startDate).startOf('months') moment(startDate).endOf('months')
sumber