মুহুর্তের জেএস শুরু এবং প্রদত্ত মাসের শেষ


96

আমার দেওয়া জেএস তারিখের বছর = 2014 এবং মাস = 9 (সেপ্টেম্বর 2014) গণনা করা দরকার।

আমি এটি চেষ্টা করেছি:

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

উভয় লগই দেখায়:

Tue Sep 30 2014 23:59:59 GMT+0200 (CEST)
Tue Sep 30 2014 23:59:59 GMT+0200 (CEST)

শেষের তারিখটি সঠিক তবে ... শুরুর তারিখটি কেন নয়?

উত্তর:


184

endOfমূল কারণটি পরিবর্তিত করে।

প্রাসঙ্গিক উক্তি:

আসল মুহুর্তটিকে সময়ের এককের শেষের দিকে সেট করে রূপান্তরিত করে।

এখানে একটি উদাহরণ ফাংশন যা আপনাকে আউটপুট দেয় তা দেয়:

function getMonthDateRange(year, month) {
    var moment = require('moment');

    // month in moment is 0 based, so 9 is actually october, subtract 1 to compensate
    // array is 'year', 'month', 'day', etc
    var startDate = moment([year, month - 1]);

    // Clone the value before .endOf()
    var endDate = moment(startDate).endOf('month');

    // just for demonstration:
    console.log(startDate.toDate());
    console.log(endDate.toDate());

    // make sure to call toDate() for plain JavaScript date type
    return { start: startDate, end: endDate };
}

তথ্যসূত্র:


4
momentআদর্শবান, যাতে আপনি endDate = moment(starDate).endOf("month") ^।
আপনাকে ধন্যবাদ

4
অবশ্যই, ডকুমেন্টেশনে কোনও বস্তুর ক্লোন করার ডিফল্ট উপায় হ'ল moment(<value>)। সংক্ষিপ্ত কিছু ফাংশন ব্যবহার করার জন্য উদাহরণ আপডেট করে।
Klyd

4
ধন্যবাদ. এটি কেন কাজ করছে না তা জানার চেষ্টা করে আমি দুই ঘন্টা ব্যয় করেছি।
লিওন

4
ওয়েবে প্রথমবারের মতো আমি আদর্শবান শব্দটি ব্যবহার করেছি! ভাল কাজ করেছেন নামিক
মাইক

add(-1,"month")জানুয়ারী এবং আপনি গত বছরের মাসে পেতে চাইলে কাজ করে না।
আখয়

21

আপনি এটি মাসের শেষ বা শুরু হওয়ার তারিখের জন্য সরাসরি ব্যবহার করতে পারেন

new moment().startOf('month').format("YYYY-DD-MM");
new moment().endOf("month").format("YYYY-DD-MM");

আপনি একটি নতুন ফর্ম্যাট সংজ্ঞায়িত করে ফর্ম্যাট পরিবর্তন করতে পারেন


16

আপনি যখন ব্যবহার করেন তখন .endOf()যে বস্তুটির উপর ডাকা হয় তা পরিবর্তন করতে পারেনstartDate 30 শে সেপ্টেম্বর হয়

.clone()এটির পরিবর্তনের পরিবর্তে এটির অনুলিপি তৈরি করতে আপনার ব্যবহার করা উচিত

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

5

নিম্নলিখিত কোড ব্যবহার করে দেখুন:

const moment=require('moment');
console.log("startDate=>",moment().startOf('month').format("YYYY-DD-MM"));
console.log("endDate=>",moment().endOf('month').format("YYYY-DD-MM"));

4
এটি কেন এবং কীভাবে সমস্যার সমাধান করবে তা
বোঝাতে

3

শেষ দিনটি পাওয়ার জন্য কোনও প্রত্যক্ষ পদ্ধতি আছে তা সত্যিই ভাববেন না তবে আপনি এরকম কিছু করতে পারেন:

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

2

আপনার স্টার্ট ডেট মাসের প্রথম দিন, এই ক্ষেত্রে আমরা ব্যবহার করতে পারি

var endDate = moment(startDate).add(1, 'months').subtract(1, 'days');

আশাকরি এটা সাহায্য করবে!!


0
var d = new moment();
var startMonth = d.clone().startOf('month');
var endMonth = d.clone().endOf('month');
console.log(startMonth, endMonth);

ডক


0

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>


0
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;
}

অনুগ্রহ করে নোট করুন, .ক্লোন () মুহুর্তের মধ্যে প্রয়োজনীয়, অন্যথায় এটি মানটিকে ওভাররাইড করে। আপনার ক্ষেত্রে এটি মনে হয়।

এটি আরও জেনেরিক, তারিখের মধ্যে পড়া তারিখের গুচ্ছ পেতে।


-2

নিম্নলিখিত কোডে কাজ করা উচিত:

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

-2

নিম্নলিখিত কোড ব্যবহার করে দেখুন:

moment(startDate).startOf('months')
moment(startDate).endOf('months')

4
স্ট্যাক ওভারফ্লোতে আপনাকে স্বাগতম। এই প্রশ্নের আরও দশটি উত্তর রয়েছে; আপনারা কেন অন্যের চেয়ে ভাল বা পছন্দনীয় তা বোঝানো আপনার পক্ষে ভাল।
সিবিবি

এটি প্রত্যাশিত ও / পি দিচ্ছে না
শ্যাম
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.