Проверьте, является ли 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++;
}
}