Поиск даты понедельника на неделе с помощью asp.net

Мне нужно найти дату понедельника на этой неделе.

Например, на этой неделе понедельник был 25 числа, поэтому мне нужна дата: 25/02/2013.

И когда мы перенесемся на следующую неделю, нужно рассчитать: 03.03.2013.

Я пытался искать, но я не могу найти его для asp.net.


person Nuthan Gowda    schedule 27.02.2013    source источник
comment
Дубликат stackoverflow.com/questions/1706589/datetime-question -in-vb-net и stackoverflow.com/questions/1710487/ это не имеет ничего общего с asp.net..   -  person Harsh Baid    schedule 27.02.2013
comment
Какой у тебя первый день недели? Воскресенье? Понедельник?   -  person Rawling    schedule 27.02.2013


Ответы (2)


DateTime mondayDate = DateTime
                          .Today
                          .AddDays(((int)(DateTime.Today.DayOfWeek) * -1) + 1);

Итак, на сегодня {27/02/2013 12:00:00 AM} это даст {25/02/2013 12:00:00 AM}

person Habib    schedule 27.02.2013
comment
Спасибо. Это отлично работает - person Nuthan Gowda; 27.02.2013
comment
@Sideways, добро пожаловать - person Habib; 27.02.2013
comment
Это нормально работает, пока воскресенье является первым днем ​​​​вашей недели, поэтому я предполагаю, что это относится к OP. - person Rawling; 27.02.2013

Использование в С#:

dt.AddDays(1 - (dt.DayOfWeek == DayOfWeek.Sunday ? 7 : (int)dt.DayOfWeek));

Использование в VB.NET:

dt.AddDays(1 - If(dt.DayOfWeek = DayOfWeek.Sunday, 7, dt.DayOfWeek))

Ссылка: DateTime вопрос в VB.NET

person Harsh Baid    schedule 27.02.2013
comment
@TimSchmelter Спасибо за это, я обновился до If с IIf .. Я не очень хорошо разбираюсь в VB.NET;) - person Harsh Baid; 27.02.2013
comment
Итак, если dt — понедельник, из него вычитается шесть дней, что дает вторник... что? - person Rawling; 27.02.2013
comment
@Rawling Спасибо, я только что проверил это, и каждый вторник не мог найти понедельники. Однако я обновил код, чтобы решить эту проблему, и теперь он должен работать так же хорошо, как Butter. - person Harsh Baid; 27.02.2013
comment
Но теперь, если вы дадите ему понедельник, он даст вам предыдущий понедельник. - person Rawling; 27.02.2013
comment
@Rawling Обновил мой ответ. :| кстати, как вы думаете, этот фрагмент кода может обрабатывать недели, которые начинаются в другие дни, кроме воскресенья, в качестве первого дня недели? - person Harsh Baid; 27.02.2013
comment
Вся часть If теперь лишняя, потому что DayOfWeek.Monday уже 1. Исходный код сопоставил Sunday с 7, чтобы сопоставить воскресенье с предыдущим понедельником, т. е. рассматривать понедельник как первый день недели; если воскресенье - первый день недели, то особых случаев не требуется. Для любого другого дня недели, начиная с недели, вам понадобится что-то более сложное. - person Rawling; 27.02.2013