2011-08-06 94 views

回答

5

您可以使用.NET框架的Calendar class

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() 
+1

优秀的答案,但我会稍微修改一下,以检查IsCurrentWeek()函数中的年份。否则,你可以在1975年说一个日期,并说这是在2012年的某个日期的本周。在下面的回答中概述了 – noonand

+0

你是对的,我已经更新了答案! :) – diemogebhardt

3

月份和年份很简单:

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

DateTime类型的Month属性是1到12之间的整数值,因此,如果你正在寻找,看看当年的当月存在的日期你将不得不针对这两种性质的测试:

if (yourDate.Month == DateTime.Now.Month && yourDate.Year == DateTime.Now.Year) 
    ... 
+1

+1好点,如果你比较一个月,你可能还应该比较一年。 – Andomar

0

这只是为了对上述接受的答案注释扩大:

(日期是在构造函数中设置属性)

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)); 
    } 
相关问题