如何确定给定日期是否在下周/月

时间:2014-05-16 02:33:35

标签: c# datetime

例如我必须在datetimepicker中选择May 16,2014,将会弹出#34;本周"如果我在2014年5月20日的datetimepicker中选择它将会弹出"下周"并且2014年6月20日将会出现"下个月"。

我试过了..

  System.Globalization.CultureInfo ci = System.Threading.Thread.CurrentThread.CurrentCulture;
        DayOfWeek firstDayOfWeek = ci.DateTimeFormat.FirstDayOfWeek;
        int offset = firstDayOfWeek - DateTime.Now.DayOfWeek;
        DayOfWeek lastDayOfWeek = DateTime.Now.AddDays(offset).AddDays(6).DayOfWeek;
        DateTime nextmonth = DateTime.Now.AddMonths(1);



        DateTime input = DateTime.Now.AddDays(1);
        input = dateTimePicker1.Value;
        DateTime startOfWeek = DateTime.Today;
        while (startOfWeek.DayOfWeek != firstDayOfWeek)
            startOfWeek = startOfWeek.AddDays(-1);
        DateTime endOfWeek = DateTime.Now;
        while (endOfWeek.DayOfWeek != lastDayOfWeek)
            endOfWeek = endOfWeek.AddDays(1);

        bool thisWeek = input >= startOfWeek && input <= endOfWeek;
        bool Thismonth = input == startOfWeek && input < endOfWeek;
        bool nextMonth = input == nextmonth;

        if (thisWeek == true)
        {
            label1.Text = "This Week";
        }
        else if (thisWeek == false)
        {
            label1.Text = "Next Week";
        }
         else if (nextMonth == true) 
        {
            label1.Text = "Next Month";
        }

1 个答案:

答案 0 :(得分:2)

没有太多问题要做。 C#提供了大量的日期时间功能,但不是&#34;本周是#34;虽然你可以为此写一个扩展方法。

System.Globalization.CultureInfo ci = System.Threading.Thread.CurrentThread.CurrentCulture;
DayOfWeek firstDayOfWeek = ci.DateTimeFormat.FirstDayOfWeek;
int offset = firstDayOfWeek - DateTime.Now.DayOfWeek;
DayOfWeek lastDayOfWeek = DateTime.Now.AddDays(offset).AddDays(6).DayOfWeek;

DateTime input = DateTime.Now.AddDays(1);
DateTime startOfWeek = DateTime.Today;
while (startOfWeek.DayOfWeek != firstDayOfWeek)
    startOfWeek = startOfWeek.AddDays(-1);
DateTime endOfWeek = DateTime.Now;
while (endOfWeek.DayOfWeek != lastDayOfWeek)
    endOfWeek = endOfWeek.AddDays(1);

Console.WriteLine("Week starts: " + startOfWeek);
Console.WriteLine("Week ends: " + endOfWeek);
Console.WriteLine("Input was: " + input);

Console.Write("Is input this week? ");
bool thisWeek = input >= startOfWeek && input <= endOfWeek;
Console.WriteLine(thisWeek);