簡體   English   中英

從DateTime.Now獲取當前周的日期列表

[英]Getting the list of days of the current week from DateTime.Now

我的矛盾或者很簡單的問題是從今天開始,以DD-MM-YY格式創建一個日期列表。 假設我們今天有“11/04/2015”好嗎? 我有興趣創建一個日期時間列表,該列表從2015年11月2日星期一到2015年11月8日星期日開始。 這怎么可能? 我最初想過:

DateTime today = new DateTime.Now;

int posDayOfWeek = (int)today.DayOfWeek;

if (posDayOfWeek < 7 && posDayOfWeek > 1)
{
    // And from there a black hole in my brain ....
}

我真的不知道該怎么辦....

謝謝Cristian Capannini

假設你總是想要周一到周日,你只需要:

DateTime today = DateTime.Today;
int currentDayOfWeek = (int) today.DayOfWeek;
DateTime sunday = today.AddDays(-currentDayOfWeek);
DateTime monday = sunday.AddDays(1);
// If we started on Sunday, we should actually have gone *back*
// 6 days instead of forward 1...
if (currentDayOfWeek == 0)
{
    monday = monday.AddDays(-7);
}
var dates = Enumerable.Range(0, 7).Select(days => monday.AddDays(days)).ToList();

只要用這個:

DayOfWeek[] days = { 
    DayOfWeek.Sunday, 
    DayOfWeek.Monday, 
    DayOfWeek.Tuesday, 
    DayOfWeek.Wednesday, 
    DayOfWeek.Thursday, 
    DayOfWeek.Friday, 
    DayOfWeek.Saturday };

這很簡單。 很明顯。 而且我已經為你輸入了它。

在網上搜索類似的東西,我找到了這個問題/答案線程並進行了擴展以根據從昨天開始的星期幾創建排序順序:

//create a sort order that starts yesterday
DateTime orderStartDate = DateTime.Today.AddDays(-1);
List<int> sortOrder = Enumerable.Range(0,7).Select(days => (int)orderStartDate.AddDays(days).DayOfWeek).ToList();

//sort collection using the index of the sortOrder
collection.AddRange(list.OrderBy(list  => sortOrder.FindIndex(days => day == list.TargetDay)));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM