2016-09-27 79 views
4
<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> 

检查日期时间是周末或平日

使用日期时间,我想测试当前日期是否是工作日还是周末,那么我想打印给用户的响应。目前我收到运行时错误。如果我删除我的if语句,则第一项(当前日期和一周中的某一天)正确打印。

+0

它不可能星期六_AND_星期日 –

回答

10

您在if语句下面写错varable:中dayToday

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

而必须在条件中使用 varable。

更新: 你也犯了错误的条件。必须有or而不是and

+0

这应该是一个OR条件。星期六和星期日都不能。 – neonScarecrow

+0

@neonScarecrow,你是绝对正确的。我没有注意到这一点。 –

+0

周末周五/周六,周六/周日等中东地区的人们如何? –

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

您从

if ((dayToday == DayOfWeek.Saturday) && (dayToday == DayOfWeek.Sunday)) 
比较你的ASP.NET标签 dayToday反对 DayOfWeek枚举元素,当然这失败

也许你想在你的if语句来代替dayTodayday,即

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

此外,你可能还需要更换逻辑“和”(&&)与逻辑“或”(||)终于

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

谢谢指出! – penmas

0

您收到一个错误,因为你是比较一个带有字符串的枚举。

// 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"); 
     } 
    } 
} 
+1

非常感谢你帮助我理解我做错了什么! – penmas

0

你需要把你的asp控件放在窗体标签里,runat =“server”。

<body> 
    <form id="frm" runat="server"> 
    <p> 
    Today's 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>