获取一个月中一天的所有出现
Getting all occurrences of a day in month
我有一个月的第一天和最后一天,当月的长度我正在寻找一个函数,它会给我这个月任何一天的所有外观,我已经看到了一些函数这给出了下一个事件,但我希望能够进入任何一天并看到所有事件..我想这将是某种循环..我正在处理它,因为我们正在谈论但任何帮助都会很棒..
$scope.recurrenceFields.by_year_day=$filter('date')($scope.fields.times.dateStart, 'yyyy');
$scope.recurrenceFields.by_month=$filter('date')($scope.fields.times.dateStart, 'M');
var correntDay = new Date();
var lastDayOfMonth = new Date(correntDay.getFullYear(), correntDay.getMonth()+1, 0);
var firstDayOfMonth = new Date(correntDay.getFullYear(), correntDay.getMonth(), 1);
function daysInMonth(month,year) {
return new Date($filter('date')($scope.fields.times.dateStart, 'yyyy'), $scope.recurrenceFields.by_month, 0).getDate();
}
您可以使用此服务:
angular.module('myApp.services')
.factory('dateUtils', function () {
return {
getIntervals: function (startTimestamp, endTimestamp, interval) {
if(!angular.isNumber(startTimestamp) || !angular.isNumber(endTimestamp) || !angular.isNumber(interval) || startTimestamp===0 || endTimestamp===0) {
return [];
}
var intervals = [];
var currentPeriod = startTimestamp;
while (currentPeriod <= endTimestamp) {
intervals.push(currentPeriod);
var currentPeriodDate = new Date(currentPeriod);
currentPeriodDate.setDate(currentPeriodDate.getDate() + interval);
currentPeriod = currentPeriodDate.getTime();
}
return intervals;
}
};
});
如果您想要两个日期之间的一整天,只需使用该服务:
dateUtils.getIntervals(startDate, endDate, 1);
不太确定“本月任何一天的所有出现次数”是什么意思,但是下面的函数 returns 一个特定日期的所有出现次数月给定年月日数。
/* @param {number} year - calendar year
** @param {number} month - calendar month: 1-Jan, 2-Feb, etc.
** @param {number} dayNumber - day number: 0-Sunday, 1-Monday, etc.
** @returns {Array} Dates for all days in month of dayNumber
*/
function getAllDaysInMonth(year, month, dayNumber) {
var d = new Date(year, --month, 1);
var dates = [];
var daysToFirst = (dayNumber + 7 - d.getDay()) % 7;
var firstOf = new Date(d.setDate(d.getDate() + daysToFirst));
while (firstOf.getMonth() == month) {
dates.push(new Date(+firstOf));
firstOf.setDate(firstOf.getDate() + 7);
}
return dates;
}
// Return array of all Thursdays in July 2015
console.log(getAllDaysInMonth(2015, 7, 4));
// [Thu 02 Jul 2015,
// Thu 09 Jul 2015,
// Thu 16 Jul 2015,
// Thu 23 Jul 2015,
// Thu 30 Jul 2015]
// Get all Tuesdays in February 2000
console.log(getAllDaysInMonth(2000, 2, 2));
// [Tue 01 Feb 2000,
// Tue 08 Feb 2000,
// Tue 15 Feb 2000,
// Tue 22 Feb 2000,
// Tue 29 Feb 2000]
// Get all Sundays in December 2015
console.log(getAllDaysInMonth(2015, 12, 0));
// [Sun 06 Dec 2015,
// Sun 13 Dec 2015,
// Sun 20 Dec 2015,
// Sun 27 Dec 2015]
我有一个月的第一天和最后一天,当月的长度我正在寻找一个函数,它会给我这个月任何一天的所有外观,我已经看到了一些函数这给出了下一个事件,但我希望能够进入任何一天并看到所有事件..我想这将是某种循环..我正在处理它,因为我们正在谈论但任何帮助都会很棒..
$scope.recurrenceFields.by_year_day=$filter('date')($scope.fields.times.dateStart, 'yyyy');
$scope.recurrenceFields.by_month=$filter('date')($scope.fields.times.dateStart, 'M');
var correntDay = new Date();
var lastDayOfMonth = new Date(correntDay.getFullYear(), correntDay.getMonth()+1, 0);
var firstDayOfMonth = new Date(correntDay.getFullYear(), correntDay.getMonth(), 1);
function daysInMonth(month,year) {
return new Date($filter('date')($scope.fields.times.dateStart, 'yyyy'), $scope.recurrenceFields.by_month, 0).getDate();
}
您可以使用此服务:
angular.module('myApp.services')
.factory('dateUtils', function () {
return {
getIntervals: function (startTimestamp, endTimestamp, interval) {
if(!angular.isNumber(startTimestamp) || !angular.isNumber(endTimestamp) || !angular.isNumber(interval) || startTimestamp===0 || endTimestamp===0) {
return [];
}
var intervals = [];
var currentPeriod = startTimestamp;
while (currentPeriod <= endTimestamp) {
intervals.push(currentPeriod);
var currentPeriodDate = new Date(currentPeriod);
currentPeriodDate.setDate(currentPeriodDate.getDate() + interval);
currentPeriod = currentPeriodDate.getTime();
}
return intervals;
}
};
});
如果您想要两个日期之间的一整天,只需使用该服务:
dateUtils.getIntervals(startDate, endDate, 1);
不太确定“本月任何一天的所有出现次数”是什么意思,但是下面的函数 returns 一个特定日期的所有出现次数月给定年月日数。
/* @param {number} year - calendar year
** @param {number} month - calendar month: 1-Jan, 2-Feb, etc.
** @param {number} dayNumber - day number: 0-Sunday, 1-Monday, etc.
** @returns {Array} Dates for all days in month of dayNumber
*/
function getAllDaysInMonth(year, month, dayNumber) {
var d = new Date(year, --month, 1);
var dates = [];
var daysToFirst = (dayNumber + 7 - d.getDay()) % 7;
var firstOf = new Date(d.setDate(d.getDate() + daysToFirst));
while (firstOf.getMonth() == month) {
dates.push(new Date(+firstOf));
firstOf.setDate(firstOf.getDate() + 7);
}
return dates;
}
// Return array of all Thursdays in July 2015
console.log(getAllDaysInMonth(2015, 7, 4));
// [Thu 02 Jul 2015,
// Thu 09 Jul 2015,
// Thu 16 Jul 2015,
// Thu 23 Jul 2015,
// Thu 30 Jul 2015]
// Get all Tuesdays in February 2000
console.log(getAllDaysInMonth(2000, 2, 2));
// [Tue 01 Feb 2000,
// Tue 08 Feb 2000,
// Tue 15 Feb 2000,
// Tue 22 Feb 2000,
// Tue 29 Feb 2000]
// Get all Sundays in December 2015
console.log(getAllDaysInMonth(2015, 12, 0));
// [Sun 06 Dec 2015,
// Sun 13 Dec 2015,
// Sun 20 Dec 2015,
// Sun 27 Dec 2015]