web-dev-qa-db-fra.com

Vérifiez si dateTime est un week-end ou un jour de semaine

<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>

En utilisant dateTime, j'essaie de vérifier si la date actuelle est un jour de semaine ou un week-end, puis j'aimerais imprimer la réponse à l'utilisateur. Actuellement, je reçois une erreur d'exécution. Si je supprime mon instruction if, les premiers éléments (la date du jour et le jour de la semaine) s’impriment correctement.

11
penmas

Vous avez écrit une variable incorrecte dans l'instruction if suivante:

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

au lieu de dayToday, vous devez utiliser day varable dans la condition.

UPDATE: Vous avez également fait une erreur de condition. Il doit y avoir or au lieu de and.

30
Farid Imranov

Vous comparez votre étiquette ASP.NET dayToday à un élément d’énumération de DayOfWeek qui échoue bien sûr. 

Vous souhaitez probablement remplacer dayToday par day dans votre instruction if, c’est-à-dire de

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

à 

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

De plus, vous voudrez probablement aussi remplacer le logique 'et' (&&) par un 'ou' logique (||) pour finalement 

if ((day == DayOfWeek.Saturday) || (day == DayOfWeek.Sunday))
6
DAXaholic
if ((day >= DayOfWeek.Monday) && (day<= DayOfWeek.Friday))
{
    // action
}
1
Sajeetharan

Vous recevez une erreur car vous comparez une énumération avec une chaîne.

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

Utilisez DayOfWeek.Saturday.ToString() pour comparer à une chaîne. Vous voudrez également ne pas patiner la chaîne dayToday. Vous pouvez également utiliser la variable day pour la comparer à une énumération.

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
Shaun Luttin

Vous devez placer vos contrôles asp dans une balise de formulaire avec 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>

La signature de la méthode Page_Load est incorrecte dans votre code. Vous devez également utiliser Response.Write pour les sites Web asp au lieu de Console.Writeline. Il devrait y avoir OR (||) au lieu de AND (&&) lorsque vous vérifiez le jour de la semaine.

 <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>
0
Akshey Bhat