DateTime вопрос в VB.NET

Итак, мне нужно найти дату понедельника на этой неделе программно.

Например, для этой недели понедельник был 9-го числа, поэтому мне нужна следующая дата: 11.09.2009

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

Я пытался сделать это сам, но я не вижу, как сделать арифметику, спасибо.

10.11.2009 09:17:47
3 ОТВЕТА

C #:

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

VB.NET:

date.AddDays(1 - IIf((date.DayOfWeek = DayOfWeek.Sunday), 7, date.DayOfWeek))
4
10.11.2009 10:10:14
Когда я использую это, я получаю много синтаксических ошибок, и когда я очищаю его от того, что может принять .NET, я получаю эту ошибку: значение типа «Дата» не может быть преобразовано в «Целое число»
Gordon 10.11.2009 09:26:58
Это потому, что это C #, а не vb.net
RobS 10.11.2009 09:34:16
Я бы использовал If вместо Iif, хотя, если это возможно (короткое замыкание + безопасный тип)
Meta-Knight 10.11.2009 14:48:48
Dim thisMonday As Date = Now.AddDays((Now.DayOfWeek - 1) * -1).Date

Если сегодня воскресенье, то он дает следующий понедельник, иначе - понедельник на этой неделе.

1
28.02.2017 12:01:28
Return givenDate.AddDays(1 - CType(IIf((givenDate.DayOfWeek = DayOfWeek.Sunday), 7, givenDate.DayOfWeek), Double))

Если givenDateвоскресенье, отсчитывается до предыдущего понедельника. Включает CTypeдля приведения IIfрезультата к Double для работы Option Strict On.

1
28.02.2017 12:01:52