Проверьте, является ли dateTime выходным или рабочим днем

<script Language="c#" runat="server">
  void Page_Load()
  {
   DateTime date = DateTime.Now;
   dateToday.Text = " " + date.ToString("d");
   DayOfWeek day = DateTime.Now.DayOfWeek;
   dayToday.Text = " " + day.ToString();

   if ((dayToday == DayOfWeek.Saturday) && (dayToday == DayOfWeek.Sunday))
    {
    Console.WriteLine("This is a weekend");
    }

 }
</script>

Используя dateTime, я пытаюсь проверить, является ли текущая дата рабочим днем ​​или выходным днем, тогда я хотел бы напечатать ответ пользователю. В настоящее время я получаю Runtime Error. Если я удалю оператор if, то первые элементы (текущая дата и день недели) будут правильно напечатаны.

Ответ 1

Вы написали неверный varable в следующем выражении if:

if ((dayToday == DayOfWeek.Saturday) || (dayToday == DayOfWeek.Sunday))
{
    Console.WriteLine("This is a weekend");
}

вместо dayToday вы должны использовать day varable в условии.

UPDATE: Также вы допустили ошибку в состоянии. Должен быть or вместо and.

Правильный код

if ((day == DayOfWeek.Saturday) || (day == DayOfWeek.Sunday))
{
    Console.WriteLine("This is a weekend");
}

Ответ 2

Вы сравниваете метку ASP.NET dayToday с элементом перечисления DayOfWeek, который, конечно же, не работает

Возможно, вы хотите заменить dayToday на day в своем выражении if, то есть от

if ((dayToday == DayOfWeek.Saturday) && (dayToday == DayOfWeek.Sunday))

to

if ((day == DayOfWeek.Saturday) && (day == DayOfWeek.Sunday))

Кроме того, вы, вероятно, также захотите заменить логическое "и" (&&) логическим "или" (||), наконец,

if ((day == DayOfWeek.Saturday) || (day == DayOfWeek.Sunday))

Ответ 3

Вы получаете сообщение об ошибке, потому что вы сравниваете перечисление со строкой.

// dayToday is a string
// DayOfWeek.Saturday is an enum
if ((dayToday == DayOfWeek.Saturday) && (dayToday == DayOfWeek.Sunday))

Используйте DayOfWeek.Saturday.ToString() для сравнения с строкой. Вам также не нужно вставлять строку dayToday. Альтернативно, используйте переменную day для сравнения с перечислением.

https://dotnetfiddle.net/gUGJ0J

using System;

public class Program
{
    public static void Main()
    {
        DateTime date = DateTime.Now;

        string dateToday = date.ToString("d");
        DayOfWeek day = DateTime.Now.DayOfWeek;
        string dayToday = day.ToString();

        // compare enums
        if ((day == DayOfWeek.Saturday) || (day == DayOfWeek.Sunday))
        {
            Console.WriteLine(dateToday + " is a weekend");
        }
        else
        {
            Console.WriteLine(dateToday + " is not a weekend");
        }

        // compare strings
        if ((dayToday == DayOfWeek.Saturday.ToString()) || (dayToday == DayOfWeek.Sunday.ToString()))
        {
            Console.WriteLine(dateToday + " is a weekend");
        }
        else
        {
            Console.WriteLine(dateToday + " is not a weekend");
        }
    }
}

Ответ 4

if ((day >= DayOfWeek.Monday) && (day<= DayOfWeek.Friday))
{
    // action
}

Ответ 5

Вам нужно поместить свои asp-элементы управления в тег формы с помощью runat = "server".

<body>
    <form id="frm" runat="server">
    <p>
    Today date is: <asp:Label ID="dateToday" runat="server" />
    <br/>
    The day of the week is: <asp:Label ID="dayToday" runat="server" />
    <br/>
    </form>
</body>

Подпись метода Page_Load неверна в вашем коде. Также вы должны использовать Response.Write для asp-сайтов вместо Console.Writeline. При проверке дня недели должно быть OR (||) вместо AND (& &).

 <script language="c#" runat="server">
            protected void Page_Load(object sender, EventArgs e)
            {
                DateTime date = DateTime.Now;
                dateToday.Text = " " + date.ToString("d");
                DayOfWeek day = DateTime.Now.DayOfWeek;
                dayToday.Text = " " + day.ToString();

                if ((dayToday.Text == DayOfWeek.Saturday.ToString()) || (dayToday.Text == DayOfWeek.Sunday.ToString()))
                {
                    Response.Write("This is a weekend");
                }
            }
        </script>

Ответ 6

        List<DateTime> datelist = new List<DateTime>();

        int balanceday = 1;
        while (datelist.Count < 10)
        {
            DateTime day = DateTime.Now.AddDays(balanceday + datelist.Count).Date;
            if (day.DayOfWeek != DayOfWeek.Saturday && day.DayOfWeek != DayOfWeek.Sunday)
            {
                datelist.Add(day);
            }
            else
            {
                balanceday++;
            }
        }