在我使用此npm中的angularjs-DatePicker之前。
在这里,我可以从日期选择器中选择日期。但是现在我必须将字段设置为 FromDate 和 ToDate ,这意味着一周 StartDate < / strong>和 EndDate 应该显示该周的任何日期选择。
Ex:就像在日历中01-08-2017从星期二开始,所以每当从01到05选择任何日期时,两个字段应该显示为FromDate为01并且Todate显示为06,并且每当用户选择31时都显示相同的日期-07-2017两个字段应显示为7月30日和31日。
我有想法从DotNet中的FromDate Calender控件onchange事件中实现ToDate,就像下面提到的代码一样
Convert.ToDouble(objstart.DayOfWeek)).ToString("dd-MM-yyyy")
但是如何在angularjs中实现这个用例。
由于
答案 0 :(得分:3)
好的,我所做的就是计算不同的日期,并根据一周的开始或结束取最小/最大值。
下面:
//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));
&#13;
诀窍是使用日期,找到所有可能的开始和结束日期,然后选择正确的Math.min和Math.max,它将使用时间戳比较日期。
答案 1 :(得分:0)
JavaScript中有很好的库来处理日期操作。
https://github.com/datejs/Datejs
有一种方法
Date.parse('next friday') // Returns the date of the next Friday.
Date.parse('last monday')
使用这些方法,您可以根据当前周来获取一周的开始和结束日期。
我希望它会有所帮助。
答案 2 :(得分: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');
答案 3 :(得分:0)
此处不需要angular指令,您可以使用下面的JavaScript扩展。
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);
您的代码可能如下所示
{{1}}
答案 4 :(得分:-1)
我猜这里没有指令或过滤器,你需要自己创建一个。你可以从date-time-object
中引用日期对象