2
votes

Comment obtenir 3 jours avant la date si vous obtenez la date de la base de données?

J'ai un formulaire dans lequel l'utilisateur remplit des informations sur XYZ, avec la date de début et la date d'expiration. En cliquant sur le bouton, les informations seront enregistrées dans la base de données. Maintenant, j'ai besoin de 3 jours avant la date d'expiration et doit apparaître dans l'étiquette sur un formulaire Web ex. la date d'expiration est 12/12/2012 cette date est sauvegardée dans la base de données maintenant quand l'utilisateur ouvre son profil il doit y montrer la date d'expiration 09/12/2012

Je reçois 3 jours avant la date à partir de la date actuelle mais n'en ai aucune idée que comment obtenir si la date est venue de la base de données une idée?

vous pouvez voir dans les codes dans lbltest je montre 3 jours avant la date de la date actuelle et Label1 obtiennent la date de la base de données

SqlCommand cmd = new SqlCommand("Select Enddate from moudetails", con);
SqlDataAdapter DA = new SqlDataAdapter(cmd);
DataTable Dt = new DataTable();
DA.Fill(Dt);
if (Dt.Rows.Count > 0)
{
    lbltest.Text = DateTime.Now.AddDays(-3).ToString("dd/MM/yyyy");
    Label1.Text = Dt.Rows[0]["Enddate"].ToString();                
}


4 commentaires

Utilisez le champ DateTime lu dans la base de données au lieu de DateTime.Now


Désolé Monsieur, mais ça rebondit dans ma tête, pouvez-vous s'il vous plaît expliquer comment je fais?


Dans votre cas, quelque chose comme DateTime.Parse (Dt.Rows [0] ["Enddate"]. ToString ()). AddDays (-3) ‌; fera l'affaire.


lbltest.Text = Dt.Rows [0] .Field ("Enddate"). AddDays (-3) .ToString ("‌ dd / MM / yyyy");


3 Réponses :


2
votes

Si vous stockez les dates sous forme de chaîne, essayez d'utiliser Méthode DateTime.ParseExact . Ensuite, vous pourrez déduire les trois jours à compter de la date de récupération de la base de données.

En fonction des commentaires, une autre solution qui pourrait fonctionner consiste à convertir l'objet en datetime:

Label1.Text = (Dt.Rows[0]["Enddate"] as DateTime).ToString()

p>


1 commentaires

heureux d'aider! Veuillez la marquer comme réponse acceptée si vous n'avez pas d'autres questions. :) J'ai ajouté une autre option que vous pourrez peut-être utiliser.



0
votes

J'utilise cette méthode suggérée par Sir, ISPain17

 SqlCommand cmd = new SqlCommand("Select Enddate from moudetails", con);
    SqlDataAdapter DA = new SqlDataAdapter(cmd);
    DataTable Dt = new DataTable();
    DA.Fill(Dt);
    if (Dt.Rows.Count > 0)
    {
        string dateString = Dt.Rows[0]["Enddate"].ToString();
        //lbltest.Text = DateTime.Now.AddDays(-3).ToString("dd/MM/yyyy");
        //Label1.Text = Dt.Rows[0]["Enddate"].ToString();
        Label1.Text = DateTime.Parse(dateString).AddDays(-3).ToString();
    }

et son travail: D


2 commentaires

vous n'avez pas besoin de convertir DateTime en une chaîne, puis d'analyser une date, puis de la convertir à nouveau en une chaîne. Vérifiez ce que vous stockez dans une base de données. Si vous stockez déjà en tant que date / heure, vous pouvez directement utiliser la méthode AddDays. DateTime now = DateTime.Now; string asString = now.ToString ("jj MMMM aaaa hh: mm: ss tt"); Console.WriteLine (asString);


Dt.Rows [0] ["Enddate"] renvoie un objet selon la documentation: docs.microsoft.com/en-us/dotnet/api/… . Vous devez convertir cet objet en DateTime, cela peut également fonctionner. Mais ce ne sera pas un DateTime sans casting.



1
votes

Vous pouvez utiliser System.Convert

string dateString = Dt.Rows[0]["Enddate"].ToString();
DateTime date = Convert.ToDateTime(dateString);

date.AddDays(-3).ToString();


0 commentaires