জাভাস্ক্রিপ্টে কীভাবে সপ্তাহের প্রথম এবং শেষ দিন পাবেন


97

আমার today = new Date();আপত্তি আছে আমার চলতি সপ্তাহের প্রথম এবং শেষ দিনটি পাওয়া উচিত। সপ্তাহের শুরু এবং শেষ দিন হিসাবে আমার রবিবার এবং সোমবারের জন্য দুটি রূপই প্রয়োজন। আমি এখন একটি কোড নিয়ে কিছুটা বিভ্রান্ত হয়ে পড়েছি। তুমি কি আমাকে সাহায্য করতে পার?

উত্তর:


195
var curr = new Date; // get current date
var first = curr.getDate() - curr.getDay(); // First day is the day of the month - the day of the week
var last = first + 6; // last day is the first day + 6

var firstday = new Date(curr.setDate(first)).toUTCString();
var lastday = new Date(curr.setDate(last)).toUTCString();

firstday
"Sun, 06 Mar 2011 12:25:40 GMT"
lastday
"Sat, 12 Mar 2011 12:25:40 GMT"

এটি এই সপ্তাহের প্রথম দিন = রবিবার এবং এই সপ্তাহের শেষ দিন = শনিবারের জন্য কাজ করে। সোমবার রবিবারে এটি চালানো তুচ্ছ কাজ।

এটি বিভিন্ন মাসের প্রথম এবং শেষ দিনগুলির সাথে কাজ করা ব্যবহারকারীর জন্য অনুশীলন হিসাবে রেখে দেওয়া হয়েছে


ধন্যবাদ, আমি কীভাবে এটি তৈরি করতে পারি তবে প্রথম দিন সোমবার হলে?
জুয়ানপাবলো

4
var first = curr.getDate() - curr.getDay() +1;
জুয়ানপাবলো

40
আপনার যখন বিভিন্ন মাস থাকে তখন এটি কার্যকর করতে -var lastday = new Date(curr.setDate(first.getDate()+6)).toUTCString();
রিচার্ড এন

4
@ রেইনসের উত্তরের অনুরূপ কোড, তবে এটি অন্যান্য মাস এবং বছরের জন্য এমনকি কাজ করবে var curr = new Date('2014-10-01T00:00:00'); // get current date var first = curr.getDate() - curr.getDay(); // First day is the day of the month - the day of the week var last = first + 6; // last day is the first day + 6 firstday = new Date(curr.setDate(first)).toUTCString(); lastday = new Date(curr.setDate(curr.getDate()+6)).toUTCString(); ঠিক আমি @ রিচার্ডএন কোডটিও সংশোধন করেছি, এতে একটি ছোট ভুল হচ্ছে
আজিজ

65
"ব্যবহারকারীর অনুশীলন হিসাবে" ... সত্যই?
অ্যাডিয়াস

63

গৃহীত উত্তরের সাথে সতর্ক থাকুন, এটি সময়টি 00:00:00 এবং 23:59:59 এ নির্ধারণ করে না, যাতে আপনার সমস্যা হতে পারে।

তারিখগুলি মোকাবেলা করতে আপনি একটি তৃতীয় পক্ষের তারিখ লাইব্রেরি ব্যবহার করতে পারেন। উদাহরণ স্বরূপ:

var startOfWeek = moment().startOf('week').toDate();
var endOfWeek   = moment().endOf('week').toDate();

সম্পাদনা: 2020 সেপ্টেম্বর হিসাবে, মোমেন্ট ব্যবহার করে নতুন প্রকল্পগুলির জন্য নিরুত্সাহিত করা হয়েছে ( ব্লগ পোস্ট )

আর একটি জনপ্রিয় বিকল্প হ'ল ডেট-এফএনএস


20
আপনি যদি "সপ্তাহ" এর পরিবর্তে মুহূর্তে "আইসোইক" ব্যবহার করেন অন্যথায় এটি সপ্তাহটি রবিবার থেকে শুরু হবে এবং এটি var startOfWeek = moment().startOf('isoweek').toDate(); var endOfWeek = moment().endOf('isoweek').toDate();
শনিবারের

ধন্যবাদ আপনারা আমার সময়টি
সাশ্রয় করেছেন

4
Moment.js ব্যবহার না করে সময়ের জন্য অ্যাকাউন্ট করতে, ডেট.সেট ঘন্টাগুলি ব্যবহার করুন: curr.setHours (0,0,0,0); গত দিন.সেটআউটস (23,59,59,59);
মাতাদুর

অবশ্যই 'আইসওউইক' হতে হবে না 'আইসওইক'
ময়ুর সানার

প্রেমের মুহূর্তের জেএস, সেখানে একটি সেরা তারিখ / সময় libs!
ভিপি 18

50

আপনি সপ্তাহের প্রথম এবং শেষ তারিখ পেতে নিম্নলিখিত লাইন কোডগুলি ব্যবহার করতে পারেন:

var curr = new Date;
var firstday = new Date(curr.setDate(curr.getDate() - curr.getDay()));
var lastday = new Date(curr.setDate(curr.getDate() - curr.getDay()+6));

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


4
হ্যাঁ, তবে @ টোটেমিডি, রায়নোসের উত্তরটি 1 মার্চ 2019 এর জন্য ভুল, আমার কাছে তার প্রমাণ রয়েছে, প্রথম দিন :: রবি, 24 ফেব্রুয়ারী 2019 08:33:48 GMT গত দিন :: শনি, 02 ফেব্রুয়ারী 2019 08:33:48 GMT
দীপক প্যাটেল

14

যে কোনও শুরু দিনের জন্য প্রথম এবং শেষ দিনটি পাওয়ার জন্য এখানে একটি দ্রুত উপায়। জানে যে:

1 দিন = 86,400,000 মিলিসেকেন্ড।

জেএস তারিখের মানগুলি মিলি সেকেন্ডে

রেসিপি: আপনার সপ্তাহের শুরুর দিনটি পাওয়ার জন্য আপনাকে কত দিন অপসারণ করতে হবে তা নির্ধারণ করুন (1 দিনের মূল্য মিলি সেকেন্ডে গুণিত করুন)। এর পরে যা কিছু অবশিষ্ট রয়েছে তা হল আপনার শেষ দিনটি পেতে 6 দিন যুক্ত করা।

var startDay = 1; //0=sunday, 1=monday etc.
var d = now.getDay(); //get the current day
var weekStart = new Date(now.valueOf() - (d<=0 ? 7-startDay:d-startDay)*86400000); //rewind to start day
var weekEnd = new Date(weekStart.valueOf() + 6*86400000); //add 6 days to get last day

4
এটি কার্যকর হয় না কারণ দিনগুলি সর্বদা ডিএসটি-র পক্ষে 86,400,000 মিলি সেকেন্ডের জন্য দীর্ঘ নয় ...
ভ্যালারডোহারিস

10

দুর্দান্ত (এবং অপরিবর্তনীয়) ডেট-এফএনএস লাইব্রেরি এটিকে খুব সংক্ষিপ্তভাবে পরিচালনা করে:

const start = startOfWeek(date);
const end = endOfWeek(date);

সপ্তাহের ডিফল্ট শুরুর দিনটি রবিবার (0), তবে এটি সোমবার (1) এ পরিবর্তিত হতে পারে:

const start = startOfWeek(date, {weekStartsOn: 1});
const end = endOfWeek(date, {weekStartsOn: 1});

4
ডেট-এফএনএস ব্যবহারের জন্য প্লাস 1 এবং মুহুর্তটি নয়
CENT1PEDE

@ রবজি আপনার যে কোনও পদ্ধতি ব্যবহার করবেন তা সপ্তাহের প্রথম দিনেই থাকবে।
ফ্রিওয়াকার

4

আপনি এই মত কিছু করতে পারে

var today = new Date();
var startDay = 0; 
var weekStart = new Date(today.getDate() - (7 + today.getDay() - startDay) % 7);
var weekEnd = new Date(today.getDate() + (7 - today.getDay() - startDay) % 7);

যেখানে startDay0 থেকে 6 পর্যন্ত একটি সংখ্যা যেখানে 0 রবিবারকে দাঁড়ায় (অর্থাত 1 = সোমবার, 2 = মঙ্গলবার ইত্যাদি)।


3

SetDateমাসের দিন নির্ধারণ করবে। setDateমাসের শুরু এবং শেষের সময় ব্যবহার করা, ভুল সপ্তাহে ফল দেয়

var curr = new Date("08-Jul-2014"); // get current date
var first = curr.getDate() - curr.getDay(); // First day is the day of the month - the day of the week
var last = first + 6; // last day is the first day + 6
var firstday = new Date(curr.setDate(first)); // 06-Jul-2014
var lastday = new Date(curr.setDate(last)); //12-Jul-2014

যদি আপনি নির্ধারণের তারিখটি 01-জুলাই -2014 হয় তবে এটি প্রথম দিনটি 29-জুন-2014 হিসাবে এবং শেষ দিনটি 05-জুলাই -2014 এর পরিবর্তে 05-জুন-2014 হিসাবে প্রদর্শিত হবে

সুতরাং আমি এই সমস্যাটি কাটিয়ে উঠি

var curr = new Date();
day = curr.getDay();
firstday = new Date(curr.getTime() - 60*60*24* day*1000); //will return firstday (ie sunday) of the week
lastday = new Date(curr.getTime() + 60 * 60 *24 * 6 * 1000); //adding (60*60*6*24*1000) means adding six days to the firstday which results in lastday (saturday) of the week

" মাসের শুরু এবং শেষের সময় সেটডেট ব্যবহার করা হলে ভুল সপ্তাহে ফলাফল আসবে " সঠিকভাবে ব্যবহৃত না হলে।
রবজি

3

এটি বছর এবং মাস পরিবর্তন জুড়ে কাজ করে।

Date.prototype.GetFirstDayOfWeek = function() {
    return (new Date(this.setDate(this.getDate() - this.getDay())));
}

Date.prototype.GetLastDayOfWeek = function() {
    return (new Date(this.setDate(this.getDate() - this.getDay() +6)));
}

var today = new Date();

alert(today.GetFirstDayOfWeek());

alert(today.GetLastDayOfWeek());

এখন যে অপ্রয়োজনীয় মনে হয়। এসএমএইচ
ক্রিস ল্যাং

এবং সপ্তাহের জন্য সোমবার শুরু?
রবজি

@RobG পড়ুন দয়া করে এই
শিব

2

আমি এই জাতীয় ক্ষেত্রে Moment.js ব্যবহার করার পরামর্শ দিচ্ছি। আমার এমন পরিস্থিতি ছিল যেখানে আমাকে বর্তমান তারিখের সময়, এই সপ্তাহ, এই মাসে এবং এই ত্রৈমাসীর তারিখের সময়টি পরীক্ষা করতে হয়েছিল। উত্তরের উপরে আমাকে সহায়তা করেছে তাই আমি ভাবলাম বাকি কাজগুলিও ভাগ করে নেব।

কেবলমাত্র নির্দিষ্ট ফর্ম্যাটে বর্তমান তারিখের সময় পাওয়ার জন্য

        case 'Today':
        moment().format("DD/MM/YYYY h:mm A");

        case 'This Week':
          moment().endOf('isoweek').format("DD/MM/YYYY h:mm A");

সপ্তাহটি রবিবার থেকে শুরু হয়ে শনিবার শেষ হয় যদি আমরা 'ওয়ানডে' এন্ডোফ ফাংশনের জন্য প্যারামিটার হিসাবে ব্যবহার করি তবে সপ্তাহের শেষের দিকে রবিবার পেতে আমাদের 'আইসোইক' ব্যবহার করা দরকার।

        case 'This Month':
          moment().endOf('month').format("DD/MM/YYYY h:mm A");

        case 'This Quarter':
          moment().endOf('quarter').format("DD/MM/YYYY h:mm A");

আমি আমার প্রয়োজন অনুসারে এই ফর্ম্যাটটি বেছে নিয়েছি। আপনি আপনার প্রয়োজন অনুযায়ী ফর্ম্যাটটি পরিবর্তন করতে পারেন।


মোমেন্ট.জেএস এখন একটি উত্তরাধিকারী প্রকল্প এবং আরও উল্লেখযোগ্য আপডেটগুলি পাবেন না: github.com/moment/moment#project-status
ফ্রিওয়াকার

2
        //get start of week; QT
    function _getStartOfWeek (date){
        var iDayOfWeek = date.getDay();
        var iDifference = date.getDate() - iDayOfWeek + (iDayOfWeek === 0 ?  -6:1);

        return new Date(date.setDate(iDifference));
    }, 

    function _getEndOfWeek(date){
        return new Date(date.setDate(date.getDate() + (7 - date.getDay()) === 7 ? 0 : (7 - date.getDay()) ));
    }, 

* বর্তমান তারিখ == 30.06.2016 এবং সোমবার সপ্তাহের প্রথম দিন।

এটি বিভিন্ন মাস এবং বছর ধরেও কাজ করে। কুনিট স্যুটে পরীক্ষিত:

এখানে চিত্র বর্ণনা লিখুন

        QUnit.module("Planung: Start of week");
    QUnit.test("Should return start of week based on current date", function (assert) {
        var startOfWeek = Planung._getStartOfWeek(new Date());
        assert.ok( startOfWeek , "returned date: "+ startOfWeek);
    });

    QUnit.test("Should return start of week based on a sunday date", function (assert) {
        var startOfWeek = Planung._getStartOfWeek(new Date("2016-07-03"));
        assert.ok( startOfWeek , "returned date: "+ startOfWeek);
    });

    QUnit.test("Should return start of week based on a monday date", function (assert) {
        var startOfWeek = Planung._getStartOfWeek(new Date("2016-06-27"));
        assert.ok( startOfWeek , "returned date: "+ startOfWeek);
    });

    QUnit.module("Planung: End of week");
    QUnit.test("Should return end of week based on current date", function (assert) {
        var endOfWeek = Planung._getEndOfWeek(new Date());
        assert.ok( endOfWeek , "returned date: "+ endOfWeek);
    });
    QUnit.test("Should return end of week based on sunday date with different month", function (assert) {
        var endOfWeek = Planung._getEndOfWeek(new Date("2016-07-03"));
        assert.ok( endOfWeek , "returned date: "+ endOfWeek);
    });
    QUnit.test("Should return end of week based on monday date with different month", function (assert) {
        var endOfWeek = Planung._getEndOfWeek(new Date("2016-06-27"));
        assert.ok( endOfWeek , "returned date: "+ endOfWeek);
    });
    QUnit.test("Should return end of week based on 01-06-2016 with different month", function (assert) {
        var endOfWeek = Planung._getEndOfWeek(new Date("2016-06-01"));
        assert.ok( endOfWeek , "returned date: "+ endOfWeek);
    });
    QUnit.test("Should return end of week based on 21-06-2016 with different month", function (assert) {
        var endOfWeek = Planung._getEndOfWeek(new Date("2016-06-21"));
        assert.ok( endOfWeek , "returned date: "+ endOfWeek);
    });
    QUnit.test("Should return end of week based on 28-12-2016 with different month and year", function (assert) {
        var endOfWeek = Planung._getEndOfWeek(new Date("2016-12-28"));
        assert.ok( endOfWeek , "returned date: "+ endOfWeek);
    });
    QUnit.test("Should return end of week based on 01-01-2016 with different month and year", function (assert) {
        var endOfWeek = Planung._getEndOfWeek(new Date("2016-01-01"));
        assert.ok( endOfWeek , "returned date: "+ endOfWeek);
    });

2
var dt = new Date()  //current date of week
var currentWeekDay = dt.getDay();
var lessDays = currentWeekDay == 0 ? 6 : currentWeekDay-1
var wkStart = new Date(new Date(dt).setDate(dt.getDate()- lessDays));
var wkEnd = new Date(new Date(wkStart).setDate(wkStart.getDate()+6));

এটি যে কোনও তারিখের দৃশ্যের জন্য দরকারী।


1

krtek এর পদ্ধতিতে কিছু ভুল আছে, আমি এটি পরীক্ষা করেছি

var startDay = 0; 
var weekStart = new Date(today.getDate() - (7 + today.getDay() - startDay) % 7);
var weekEnd = new Date(today.getDate() + (6 - today.getDay() - startDay) % 7);

এটা কাজ করে


1

যদিও প্রশ্নটি অপ্রচলিত বলে মনে হচ্ছে আমাকে একটি সমস্যা উল্লেখ করতে হবে।
প্রশ্ন: 1 লা জানুয়ারী 2016 এ কী হবে?
আমি মনে করি উপরের সমাধানগুলির বেশিরভাগগুলি 27.12.2016 হিসাবে সপ্তাহের শুরু গণনা করে। এই কারণেই আমি মনে করি, সঠিক গণনাটি নীচের দিকে সহজভাবে হওয়া উচিত;

var d = new Date(),
    dayInMs = 1000 * 60 * 60 * 24,
    weekInMs = dayInMs * 7,
    startOfToday = new Date(d.getFullYear(), d.getMonth(), d.getDate()).valueOf(),
    todayElapsedTime = d.valueOf() - startOfToday,
    dayDiff = d.getDay() * dayInMs,
    dateDiff = dayDiff + todayElapsedTime, 
    // finally
    startOfWeek = d.valueOf() - dateDiff,
    endOfWeek = startOfWeek + weekInMs - 1;

0

ভাল পরামর্শ তবে আপনি শেষদিনে একটি ছোট সমস্যা পেয়েছেন। আপনার এটি পরিবর্তন করা উচিত:

lastday = new Date(firstday.getTime() + 60 * 60 *24 * 6 * 1000);

সমস্ত দিন ২৪ ঘন্টা দীর্ঘ নয় যেখানে দিবালোক সংরক্ষণ পালন করা হয়।
রবিজি

0

মুহুর্তের দৃষ্টিভঙ্গি আমার পক্ষে সমস্ত মামলার জন্য কাজ করেছিল (যদিও আমি বছরের শেষ, লিপ বছরগুলির মতো সীমানা পরীক্ষা করি নি)। আপনি যদি সোমবার থেকে সপ্তাহ শুরু করতে চান তবে উপরের কোডটিতে কেবল সংশোধন হ'ল প্যারামিটারটি "isoWeek"।

    let startOfWeek = moment().startOf("isoWeek").toDate();
    let endOfWeek = moment().endOf("isoWeek").toDate();

0

কেবল খাঁটি জাভাস্ক্রিপ্ট ব্যবহার করে, আপনি নীচের ফাংশনটি সপ্তাহের শুরুতে অবাধে নির্ধারিত দিন সহ সপ্তাহের প্রথম দিন এবং শেষ দিন পেতে ব্যবহার করতে পারেন।

var weekday = [];
weekday[0] = "Sunday";
weekday[1] = "Monday";
weekday[2] = "Tuesday";
weekday[3] = "Wednesday";
weekday[4] = "Thursday";
weekday[5] = "Friday";
weekday[6] = "Saturday";

function getFirstDayOfWeek(date, from) {
    //Default start week from 'Sunday'. You can change it yourself.
    from = from || 'Sunday'; 
    var index = weekday.indexOf(from);
    var start = index >= 0 ? index : 0;

    var d = new Date(date);
    var day = d.getDay();
    var diff = d.getDate() - day + (start > day ? start - 7 : start);
    d.setDate(diff);
    return d;
};

সপ্তাহের প্রথম দিন সপ্তাহের প্রথম দিনের ঠিক 6 দিন পরে

function getLastDayOfWeek(date, from) {
    from = from || 'Sunday';
    var index = weekday.indexOf(from);
    var start = index >= 0 ? index : 0;

    var d = new Date(date);
    var day = d.getDay();
    var diff = d.getDate() - day + (start > day ? start - 1 : 6 + start);
    d.setDate(diff);
    return d;
};

পরীক্ষা:

getFirstDayOfWeek('2017-10-16'); //--> Sun Oct 15 2017
getFirstDayOfWeek('2017-10-16', 'Monday'); //--> Mon Oct 16 2017
getFirstDayOfWeek('2017-10-16', 'Tuesday'); //--> Tue Oct 10 2017

0

জাভাস্ক্রিপ্ট

function getWeekDays(curr, firstDay = 1 /* 0=Sun, 1=Mon, ... */) {
  var cd = curr.getDate() - curr.getDay();
  var from = new Date(curr.setDate(cd + firstDay));
  var to = new Date(curr.setDate(cd + 6 + firstDay));

  return {
    from,
    to,
  };
};

টাইপস্ক্রিপ্ট

export enum WEEK_DAYS {
  Sunday = 0,
  Monday = 1,
  Tuesday = 2,
  Wednesday = 3,
  Thursday = 4,
  Friday = 5,
  Saturday = 6,
}

export const getWeekDays = (
  curr: Date,
  firstDay: WEEK_DAYS = WEEK_DAYS.Monday
): { from: Date; to: Date } => {
  const cd = curr.getDate() - curr.getDay();
  const from = new Date(curr.setDate(cd + firstDay));
  const to = new Date(curr.setDate(cd + 6 + firstDay));

  return {
    from,
    to,
  };
};

0

আমরা jquery কোড যুক্ত করেছি যা সোমবার থেকে রবিবার পর্যন্ত চলমান সপ্তাহগুলি দেখায়।

var d = new Date();
var week = [];
var _days = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'];
var _months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];
for (let i = 1; i <= 7; i++) {
    let first = d.getDate() - d.getDay() + i; 
    let dt = new Date(d.setDate(first));
    var _day = _days[dt.getDay()];
     var _month = _months[dt.getMonth()];
     var _date = dt.getDate();
     if(_date < 10 ){
         _date = '0' +_date;
     }
     var _year = dt.getFullYear();
     var fulldate = _day+' '+_month+' '+_date+' '+_year+' ';
     week.push(fulldate);
  }
console.log(week);

এই কোডটি সপ্তাহের দিন হিসাবে একটি অ্যারে হিসাবে সপ্তাহের দিনগুলি সঞ্চয় করে। অ্যারেতে সংরক্ষণের তারিখের ফর্ম্যাটটি হ'ল দিন সোমবারের অর্থ হ'ল এটি সপ্তাহের প্রথম দিন, পরে মাস, তারিখ এবং বছর দেখায় shows
নীররাজ সিং

এই "jQuery কোড" কেমন? একই কৌশলটি ব্যবহার করে অনেকগুলি সহজ উত্তর রয়েছে।
রবজি

0

প্রচুর উত্তর সহ একটি পুরানো প্রশ্ন, সুতরাং অন্য একটি সমস্যা হবে না। সকল ধরণের সময় ইউনিটের শুরু এবং শেষ পেতে কিছু সাধারণ ফাংশন।

জন্য startOf এবং endOf সপ্তাহে, রবিবার (0) কিন্তু কোনো দিন সপ্তাহে অক্ষমতা শুরুর দিন পাস করা যেতে পারে (সোমবার - 1, মঙ্গলবার - 2, ইত্যাদি)। যদিও কেবল গ্রেগরিয়ান ক্যালেন্ডার ব্যবহার করে।

ফাংশনগুলি উত্সের তারিখকে রূপান্তরিত করে না, সুতরাং কোনও তারিখ অন্য সপ্তাহের মতো একই সপ্তাহে রয়েছে কিনা তা দেখতে (সোমবার থেকে শুরু হওয়া সপ্তাহ):

if (d >= startOf('week', d1, 1) && d <= endOf('week', d1, 1)) {
  // d is in same week as d1
}

বা রবিবার থেকে শুরু চলতি সপ্তাহে:

if (d >= startOf('week') && d <= endOf('week')) {
  // d is in the current week
}

// Returns a new Date object set to start of given unit
// For start of week, accepts any day as start
function startOf(unit, date = new Date(), weekStartDay = 0) {
  // Copy original so don't modify it
  let d = new Date(date);
  let e = new Date(d);
  e.setHours(23,59,59,999);
  // Define methods
  let start = {
    second: d => d.setMilliseconds(0),
    minute: d => d.setSeconds(0,0),
    hour  : d => d.setMinutes(0,0,0),
    day   : d => d.setHours(0,0,0,0),
    week  : d => {
      start.day(d);
      d.setDate(d.getDate() - d.getDay() + weekStartDay);
      if (d > e) d.setDate(d.getDate() - 7);
    },
    month : d => {
      start.day(d);
      d.setDate(1);
    },
    year  : d => {
      start.day(d);
      d.setMonth(0, 1);
    },
    decade: d => {
      start.year(d);
      let year = d.getFullYear();
      d.setFullYear(year - year % 10);
    },
    century: d => {
      start.year(d);
      let year = d.getFullYear();
      d.setFullYear(year - year % 100);
    },
    millenium: d => {
      start.year(d);
      let year = d.getFullYear();
      d.setFullYear(year - year % 1000);
    }
  }
  start[unit](d);
  return d;
}

// Returns a new Date object set to end of given unit
// For end of week, accepts any day as start day
// Requires startOf
function endOf(unit, date = new Date(), weekStartDay = 0) {
  // Copy original so don't modify it
  let d = new Date(date);
  let e = new Date(date);
  e.setHours(23,59,59,999);
  // Define methods
  let end = {
    second: d => d.setMilliseconds(999),
    minute: d => d.setSeconds(59,999),
    hour  : d => d.setMinutes(59,59,999),
    day   : d => d.setHours(23,59,59,999),
    week  : w => {
      w = startOf('week', w, weekStartDay);
      w.setDate(w.getDate() + 6);
      end.day(w);
      d = w;
    },
    month : d => {
      d.setMonth(d.getMonth() + 1, 0);
      end.day(d);
    },  
    year  : d => {
      d.setMonth(11, 31);
      end.day(d);
    },
    decade: d => {
      end.year(d);
      let y = d.getFullYear();
      d.setFullYear(y - y % 10 + 9);
    },
    century: d => {
      end.year(d);
      let y = d.getFullYear();
      d.setFullYear(y - y % 100 + 99);
    },
    millenium: d => {
      end.year(d);
      let y = d.getFullYear();
      d.setFullYear(y - y % 1000 + 999);
    }
  }
  end[unit](d);
  return d;
}

// Examples
let d = new Date();

['second','minute','hour','day','week','month','year',
 'decade','century','millenium'].forEach(unit => {
   console.log(('Start of ' + unit).padEnd(18)  + ': ' +
   startOf(unit, d).toString());
   console.log(('End of ' + unit).padEnd(18)  + ': ' +
   endOf(unit, d).toString());
});


0

@ ক্রিস ল্যাং উত্তরে ছোট পরিবর্তন। আপনি যদি সোমবার চান তবে প্রথম দিনটি এটি ব্যবহার করুন।

Date.prototype.GetFirstDayOfWeek = function() {
    return (new Date(this.setDate(this.getDate() - this.getDay()+ (this.getDay() == 0 ? -6:1) )));
}
Date.prototype.GetLastDayOfWeek = function() {
    return (new Date(this.setDate(this.getDate() - this.getDay() +7)));
}

var today = new Date();

alert(today.GetFirstDayOfWeek());

alert(today.GetLastDayOfWeek());

ধন্যবাদ @ ক্রিস ল্যাং


0

function getMonday(d) {
    d = new Date(d);
    var day = d.getDay(),
        diff = d.getDate() - day + (day == 0 ? -6:1); // adjust when day is sunday
    return new Date(d.setDate(diff));
  }
  
 console.log( getMonday(new Date(new Date().getFullYear(), new Date().getMonth(), new Date().getDate())) )  // Mon Nov 08 2010

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