How to get a wise week. Start and end dates in angularjs

Before using angularjs-DatePicker from this npm .

Here I can select a date from a date picker. But now I have fields like FromDate and ToDate , which means the week StartDate and EndDate should show when the date is selected this week.

Ex: As in Calender 01-08-2017 Start in Tue, so whenever you select any date from 01 to 05, two fields should appear as FromDate as 01 and TODate as 06, and every time the user selects 31 - 07-2017 Two fields should be displayed as July 30 and 31.

I have an idea to reach a ToDate from an OnDate Calender event in an exchange event in DotNet, like for example the code below

Convert.ToDouble(objstart.DayOfWeek)).ToString("dd-MM-yyyy")

But how to achieve this truncation in the corner.

thanks

+6
source share
5 answers

Okay, so what I would do is to calculate different dates and take min / max depending on the beginning or the end of the week.

Here:

//Use the date received, UTC to prevent timezone making dates shift 
var pickedDate = new Date("08-03-2017UTC");
 
var startSunday = new Date(pickedDate);
startSunday.setDate(pickedDate.getDate() - pickedDate.getDay());
var startMonth = new Date(pickedDate);
startMonth.setDate(1);
var startDate = Math.max(startMonth,startSunday);

console.log("Start:" , new Date(startDate));

var endSaturday = new Date(pickedDate);
endSaturday.setDate(pickedDate.getDate() + (7-pickedDate.getDay()));
var endMonth = new Date(pickedDate);
endMonth.setMonth(pickedDate.getMonth()+1);//Add a month
endMonth.setDate(0);// to select last day of previous month.
var endDate = Math.min(endMonth,endSaturday);

console.log("End" , new Date(endDate));
Run codeHide result

The trick was to play around with dates, find all possible start and end dates, and then choose the right option with Math.min and Math.max, which would compare the dates using their timestamp.

+2
source

JavaScript has a very good library for handling Date layouts.

https://github.com/datejs/Datejs

Date.parse('next friday')       // Returns the date of the next Friday.
Date.parse('last monday') 

, .

, .

0

, moment. .

var selectedDate = moment('Mon Aug 10 2017');

//If you want to get the ISO week format(Monday to Sunday)
var weekStart = selectedDate.clone().startOf('isoweek').format('MMM Do');
var weekEnd = selectedDate.clone().endOf('isoweek').format('MMM Do');

//If you want to get the Sunday to Saturday week format
var weekStart = selectedDate.clone().startOf('week').format('MMM Do');
var weekEnd = selectedDate.clone().endOf('week').format('MMM Do');
0

angular , JavaScript, .

//get week from date
Date.prototype.getWeekNumber = function (weekstart) {


    var target = new Date(this.valueOf());

    // Set default for weekstart and clamp to useful range        
    if (weekstart === undefined) weekstart = 1;
    weekstart %= 7;

    // Replaced offset of (6) with (7 - weekstart)
    var dayNr = (this.getDay() + 7 - weekstart) % 7;
    target.setDate(target.getDate() - dayNr + 0);//0 means friday

    var firstDay = target.valueOf();

    target.setMonth(0, 1);
    if (target.getDay() !== 4) {
        target.setMonth(0, 1 + ((4 - target.getDay()) + 7) % 7);
    }
    return 1 + Math.ceil((firstDay - target) / 604800000);;
};

//get date rance of week
Date.prototype.getDateRangeOfWeek = function (weekNo, weekstart) {

    var d1 = this;
    var firstDayOfWeek = eval(d1.getDay() - weekstart);
    d1.setDate(d1.getDate() - firstDayOfWeek);

    var weekNoToday = d1.getWeekNumber(weekstart);
    var weeksInTheFuture = eval(weekNo - weekNoToday);

    var date1 = angular.copy(d1);
    date1.setDate(date1.getDate() + eval(7 * weeksInTheFuture));
    if (d1.getFullYear() === date1.getFullYear()) {
        d1.setDate(d1.getDate() + eval(7 * weeksInTheFuture));
    }

    var rangeIsFrom = eval(d1.getMonth() + 1) + "/" + d1.getDate() + "/" + d1.getFullYear();

    d1.setDate(d1.getDate() + 6);
    var rangeIsTo = eval(d1.getMonth() + 1) + "/" + d1.getDate() + "/" + d1.getFullYear();

    return { startDate: rangeIsFrom, endDate: rangeIsTo }
};

:

 var startdate = '01-08-2017'
                var weekList = [];
                var year = startdate.getFullYear();
                var onejan = new Date(year, 0, 1);//first january is the first week of the year
                var weekstart = onejan.getDay();
                weekNumber = startdate.getWeekNumber(weekstart);

                //generate week number
                    var wkNumber = weekNumber;
                    var weekDateRange = onejan.getDateRangeOfWeek(wkNumber, weekstart);
                    var wk = {
                        value: wkNumber
                        , text: 'Week' + wkNumber.toString()
                        , weekStartDate: new Date(weekDateRange.startDate)
                        , weekEndDate: new Date(weekDateRange.endDate)
                    };
                    weekList.push(wk);
0

, , . -

-1

All Articles