Дата на этой неделе, в этом месяце, в этом году - PullRequest
1 голос
/ 06 августа 2011

У меня есть DateTime значение, и я хочу определить, является ли эта дата следующей:

  • Текущая неделя
  • Текущий месяц
  • Текущий год

Как я могу это сделать?

Ответы [ 4 ]

5 голосов
/ 06 августа 2011

Вы можете использовать Календарь класса .NET Framework.

public static bool IsCurrentWeek(this DateTime dt)
{
    var f = DateTimeFormatInfo.CurrentInfo;
    var c = f.Calendar;
    var givenWeek = c.GetWeekOfYear(dt, f.CalendarWeekRule, f.FirstDayOfWeek);
    var givenYear = c.GetYear(dt);
    var thisWeek = c.GetWeekOfYear(DateTime.Now, f.CalendarWeekRule, f.FirstDayOfWeek);
    var thisYear = c.GetYear(DateTime.Now);
    return thisWeek == givenWeek && thisYear == givenYear;
}

public static bool IsCurrentMonth(this DateTime dt)
{
    return DateTime.Now.Month == dt.Month && dt.IsCurrentYear();
}

public static bool IsCurrentYear(this DateTime dt)
{
    return DateTime.Now.Year == dt.Year;
}

DateTime dateTime = DateTime.Now;
bool isCurrentYear = dateTime.IsCurrentYear()
3 голосов
/ 06 августа 2011

Месяц и год просты:

if (yourDate.Month = DateTime.Now.Month)
    ...

if (yourDate.Year = DateTime.Now.Year)
    ...

Неделя сложнее, поскольку правила недели различаются в зависимости от региона.Вот пример:

var dfi = DateTimeFormatInfo.CurrentInfo;
var cal = dfi.Calendar;

if (cal.GetWeekOfYear(yourDate, dfi.CalendarWeekRule, dfi.FirstDayOfWeek) ==
    cal.GetWeekOfYear(DateTime.Now, dfi.CalendarWeekRule, dfi.FirstDayOfWeek))
    ...
2 голосов
/ 06 августа 2011

Свойство Month типа DateTime является целочисленным значением от 1 до 12, поэтому, если вы хотите посмотреть, существует ли дата в текущем месяце текущего года , вы придется проверить оба свойства:

if (yourDate.Month == DateTime.Now.Month && yourDate.Year == DateTime.Now.Year)
    ...
1 голос
/ 31 января 2012

Это просто для того, чтобы расширить комментарий к принятому ответу выше:

(Date - это свойство, установленное в ctor)

    public bool IsThisWeek() 
    { 
        DateTimeFormatInfo dateTimeFormatInfo = DateTimeFormatInfo.CurrentInfo;
        Calendar calendar = dateTimeFormatInfo.Calendar;

        // Get current week and year
        int thisWeek = calendar.GetWeekOfYear(DateTime.Now, dateTimeFormatInfo.CalendarWeekRule, dateTimeFormatInfo.FirstDayOfWeek);
        int thisYear = calendar.GetYear(DateTime.Now);

        // Get the week and year from the date
        int weekToCheck = calendar.GetWeekOfYear(this.Date, dateTimeFormatInfo.CalendarWeekRule, dateTimeFormatInfo.FirstDayOfWeek);
        int yearToCheck = calendar.GetYear(this.Date);

        return  ((thisWeek == weekToCheck) && (thisYear == yearToCheck)); 
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...