我有一个var index = function( callback ) {
var podcast = 0;
User.findOne({ sessionID: this.event.session.sessionId }, function(err, user) {
if (err ||!user){
}
else {
console.log(user);
podcast = user.podcast;
}
});
callback( podcast );
};
index();
var callback = function(data) {
return data;
}
var iUseMyAnywhere = callback;
值列表,我想将整个列表拆分为每周的子列表。
日期可能跨越多年(用户选择开始日期和结束日期),因此每个日历周编号将其拆分的解决方案最终会出现冲突。
有没有办法遍历列表,然后将每周的DateTime
值存储在新的2d列表中?
可用值是周一到周五,第一周和上周的值可能更少。
我找到的唯一相关问题是How to group dates by weeks,但它不适合我的情况。
答案 0 :(得分:3)
您可以使用this method获取给定DateTime
的周数。然后,您可以将Enumerable.GroupBy
与包含年份和周数的匿名类型一起使用:
var yearWeekGroups = allDates.GroupBy(d => new { d.Year, WeekNum = GetIso8601WeekOfYear(d) });
如果您想要List<List<DateTime>>
,其中每个子列表包含一周的日期:
List<List<DateTime>> allWeeks = yearWeekGroups.Select(g => g.ToList()).ToList();
如果您所在的国家/地区不使用ISO 8601,则可以使用Calendar.GetWeekOfYear
:
var cc = CultureInfo.CurrentCulture;
var yearWeekGroups = allDates.GroupBy(d => new
{
d.Year,
WeekNum = currentCulture.Calendar.GetWeekOfYear(d, cc.DateTimeFormat.CalendarWeekRule, cc.DateTimeFormat.FirstDayOfWeek)
});