Comment supprimer la partie temps de date dans C# dans L'objet DateTime seulement?

j'ai besoin de retirer la portion de la date de fois ou probablement avoir la date dans le format suivant dans object forme pas dans la forme de string .

06/26/2009 00:00:00:000

Je ne peux pas utiliser les méthodes de conversion string car j'ai besoin de la date dans le formulaire object .

j'ai essayé d'abord la conversion du DateTime à un string , supprimer le temps de date précise, mais il ajoute 12:00:00 AM dès que je reconvertir DateTime object de retour.

342
demandé sur wonea 2011-05-25 11:58:16

30 réponses

utiliser la Date propriété:

var dateAndTime = DateTime.Now;
var date = dateAndTime.Date;

la variable date contiendra la date, la partie de temps sera 00:00:00 .

647
répondu driis 2013-03-13 06:48:58

vous pouvez utiliser des chaînes de format pour donner à la chaîne de sortie le format que vous aimez.

DateTime dateAndTime = DateTime.Now;
Console.WriteLine(dateAndTime.ToString("dd/MM/yyyy")); // Will give you smth like 25/05/2011

lire la suite ici .

119
répondu 0x49D1 2011-05-25 12:14:08

utiliser la méthode pour raccourcir les délais. Voir la documentation http://msdn.microsoft.com/en-us/library/system.datetime.toshortdatestring.aspx

var dateTimeNow = DateTime.Now; // Return 00/00/0000 00:00:00
var dateOnlyString = dateTimeNow.ToShortDateString(); //Return 00/00/0000
82
répondu Adriano Silva 2014-01-14 18:09:54

regardez la date-heure .Date propriété.

obtient le composant date de cette instance.

37
répondu Nick 2012-10-29 14:31:18

la propriété Date retournera la date à minuit.

Une option pourrait être d'obtenir les valeurs individuelles (jour/mois/année) séparément et de les stocker dans le type que vous souhaitez.

var dateAndTime = DateTime.Now; 
int year = dateAndTime.Year;
int month = dateAndTime.Month;
int day = dateAndTime.Day;

string.Format("{0}/{1}/{2}", month, day, year);
22
répondu sidprasher 2018-03-26 14:18:46

essayez de faire votre propre Structure pour cela. Objet DateTime aura la date et l'heure à la fois

14
répondu Umesh CHILAKA 2011-05-25 08:16:32

aucune des réponses ci-dessus n'a résolu mon problème sur winforms.

la façon la plus facile d'atteindre seulement date est la fonction simple dans Datetime:

DateTime dt = DateTime.now;
String BirthDate = dt.ToShortDateString();

vous n'aurez que la date dans la chaîne D'anniversaire .

14
répondu MehraD 2016-11-23 05:45:40
12
répondu VikciaR 2011-05-25 08:01:48

Vous ne pouvez pas. Un DateTime .NET ont toujours un temps, par défaut 00:00:00:000. La propriété Date d'une DateTime est aussi une DateTime (!), donc avoir un temps par défaut 00:00:00:000.

il s'agit d'une lacune dans le cadre de .NET, et on pourrait faire valoir que DateTime in .net viole le " Single Responsibility Principle .

12
répondu Tomas Vinter 2012-09-21 15:08:08

de Cette façon, d'obtenir seulement la date, sans temps

DateTime date = DateTime.Now;
string Strdateonly = date.ToString("d");

Output = 5/16/2015

7
répondu Mayank Gupta 2015-05-16 13:25:49

Voici une autre méthode utilisant String.Format

    DateTime todaysDate = DateTime.UtcNow;

    string dateString = String.Format("{0:dd/MM/yyyy}", todaysDate);

    Console.WriteLine("Date with Time: "+ todaysDate.ToString());

    Console.WriteLine("Date Only : " + dateString);

sortie:

Date with Time: 9/4/2016 11:42:16 AM

Date Only : 04/09/2016

cela fonctionne aussi si l'Heure de la Date est stockée dans la base de données.

pour plus de formatage de Date et D'heure, consultez ces liens:

référence 1

Référence 2

Espoir aide.

7
répondu stom 2016-09-04 11:58:40

je suis surpris que personne n'ait mentionné DateTime.Aujourd'hui

var date = DateTime.Today;
// {7/1/2014 12:00:00 AM}

voir MSDN

4
répondu LukeF 2014-07-01 13:20:35

est tombé sur ce post en essayant de résoudre le Q.

j'utilise Asp.Net et après quelques recherches que j'ai trouvé quand vous êtes lié à la valeur de la date en code derrière, vous pouvez laisser tomber l'heure ainsi il ne s'affichera pas à l'écran.

C#:

DateTime Today = DateTime.Now;

aspx:

<%: this.Today.ToShortDateString() %>
3
répondu John 2013-09-02 14:56:53

utiliser

DateTime.Now.ToString("dd-MM-yyyy");
3
répondu James 2013-11-27 13:35:52

j'ai écrit une structure DateOnly . Cela utilise un DateTime sous la peau, mais aucune partie du temps ne sont exposés publiquement:

using System;

public struct DateOnly : IComparable, IFormattable, IComparable<DateOnly>, IEquatable<DateOnly>
{

    private DateTime _dateValue;

    public int CompareTo(object obj)
    {
        if (obj == null)
        {
            return 1;
        }

        DateOnly otherDateOnly = (DateOnly)obj;
        if (otherDateOnly != null)
        {
            return ToDateTime().CompareTo(otherDateOnly.ToDateTime());
        }
        else
        {
            throw new ArgumentException("Object is not a DateOnly");
        }
    }

    int IComparable<DateOnly>.CompareTo(DateOnly other)
    {
        return this.CompareToOfT(other);
    }
    public int CompareToOfT(DateOnly other)
    {
        // If other is not a valid object reference, this instance is greater.
        if (other == new DateOnly())
        {
            return 1;
        }
        return this.ToDateTime().CompareTo(other.ToDateTime());
    }

    bool IEquatable<DateOnly>.Equals(DateOnly other)
    {
        return this.EqualsOfT(other);
    }
    public bool EqualsOfT(DateOnly other)
    {
        if (other == new DateOnly())
        {
            return false;
        }

        if (this.Year == other.Year && this.Month == other.Month && this.Day == other.Day)
        {
            return true;
        }
        else
        {
            return false;
        }
    }

    public static DateOnly Now()
    {
        return new DateOnly(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day);
    }

    public static bool TryParse(string s, ref DateOnly result)
    {
        DateTime dateValue = default(DateTime);
        if (DateTime.TryParse(s, out dateValue))
        {
            result = new DateOnly(dateValue.Year, dateValue.Month, dateValue.Day);
            return true;
        }
        else
        {
            return false;
        }
    }

    public static DateOnly Parse(string s)
    {
        DateTime dateValue = default(DateTime);
        dateValue = DateTime.Parse(s);
        return new DateOnly(dateValue.Year, dateValue.Month, dateValue.Day);
    }

    public static DateOnly ParseExact(string s, string format)
    {
        CultureInfo provider = CultureInfo.InvariantCulture;
        DateTime dateValue = default(DateTime);
        dateValue = DateTime.ParseExact(s, format, provider);
        return new DateOnly(dateValue.Year, dateValue.Month, dateValue.Day);
    }

    public DateOnly(int yearValue, int monthValue, int dayValue) : this()
    {
        Year = yearValue;
        Month = monthValue;
        Day = dayValue;
    }

    public DateOnly AddDays(double value)
    {
        DateTime d = new DateTime(this.Year, this.Month, this.Day);
        d = d.AddDays(value);
        return new DateOnly(d.Year, d.Month, d.Day);
    }

    public DateOnly AddMonths(int months)
    {
        DateTime d = new DateTime(this.Year, this.Month, this.Day);
        d = d.AddMonths(months);
        return new DateOnly(d.Year, d.Month, d.Day);
    }

    public DateOnly AddYears(int years)
    {
        DateTime d = new DateTime(this.Year, this.Month, this.Day);
        d = d.AddYears(years);
        return new DateOnly(d.Year, d.Month, d.Day);
    }

    public DayOfWeek DayOfWeek
    {
        get
        {
            return _dateValue.DayOfWeek;
        }
    }

    public DateTime ToDateTime()
    {
        return _dateValue;
    }

    public int Year
    {
        get
        {
            return _dateValue.Year;
        }
        set
        {
            _dateValue = new DateTime(value, Month, Day);
        }
    }

    public int Month
    {
        get
        {
            return _dateValue.Month;
        }
        set
        {
            _dateValue = new DateTime(Year, value, Day);
        }
    }

    public int Day
    {
        get
        {
            return _dateValue.Day;
        }
        set
        {
            _dateValue = new DateTime(Year, Month, value);
        }
    }

    public static bool operator == (DateOnly aDateOnly1, DateOnly aDateOnly2)
    {
        return (aDateOnly1.ToDateTime() == aDateOnly2.ToDateTime());
    }

    public static bool operator != (DateOnly aDateOnly1, DateOnly aDateOnly2)
    {
        return (aDateOnly1.ToDateTime() != aDateOnly2.ToDateTime());
    }

    public static bool operator > (DateOnly aDateOnly1, DateOnly aDateOnly2)
    {
        return (aDateOnly1.ToDateTime() > aDateOnly2.ToDateTime());
    }

    public static bool operator < (DateOnly aDateOnly1, DateOnly aDateOnly2)
    {
        return (aDateOnly1.ToDateTime() < aDateOnly2.ToDateTime());
    }

    public static bool operator >= (DateOnly aDateOnly1, DateOnly aDateOnly2)
    {
        return (aDateOnly1.ToDateTime() >= aDateOnly2.ToDateTime());
    }

    public static bool operator <= (DateOnly aDateOnly1, DateOnly aDateOnly2)
    {
        return (aDateOnly1.ToDateTime() <= aDateOnly2.ToDateTime());
    }

    public static TimeSpan operator - (DateOnly aDateOnly1, DateOnly aDateOnly2)
    {
        return (aDateOnly1.ToDateTime() - aDateOnly2.ToDateTime());
    }


    public override string ToString()
    {
        return _dateValue.ToShortDateString();
    }

    public string ToString(string format)
    {
        return _dateValue.ToString(format);
    }

    public string ToString(string fmt, IFormatProvider provider)
    {
        return string.Format("{0:" + fmt + "}", _dateValue);
    }

    public string ToShortDateString()
    {
        return _dateValue.ToShortDateString();
    }

    public string ToDbFormat()
    {
        return string.Format("{0:yyyy-MM-dd}", _dateValue);
    }
}

VB.NET, so apologies if some conversions are not 100%

3
répondu Matt Wilko 2016-04-22 14:07:20
string dt = myCalender.SelectedDate.ToString();
string date = dt.Remove(10);
displayDate.Content = date;

si vous prenez la date de calender, avec cela nous obtenons aussi du temps. Ce qui n'est pas nécessaire de tous les temps. En utilisant ceci nous pouvons supprimer l'Heure de la date.

2
répondu hizbul25 2012-07-23 11:22:46

d'après mon expérience, aucune de ces solutions n'a fonctionné, peut-être parce que je voulais supprimer l'Heure de la date extraite de la base de données, mais le code ci-dessous a bien fonctionné:

var date = target_date.Value.ToString("dd/MM/yyyy"); 
2
répondu Daniel 2013-03-13 06:49:17

vous pouvez essayer cette Date pour la seule date à partir de la Datetime

String.Format("{0:d/M/YYYY}",dt);

où dt est le DateTime

2
répondu Vikas 2013-03-13 06:49:36

déclare la variable comme une chaîne.

exemple:

public string dateOfBirth ;

puis attribuer une valeur comme :

dateOfBirth = ((DateTime)(datetimevaluefromDB)).ToShortDateString();
2
répondu Saud Khan 2014-08-19 15:07:30

si vous le convertissez en chaîne, vous pouvez facilement le faire comme ceci.

je prends date comme objet DateTime.

date.ToString("d");

cela ne vous donnera que la date.

2
répondu TAS 2014-12-02 05:53:58

je sais que c'est un vieux post avec beaucoup de réponses, mais je n'ai pas vu cette façon d'enlever la partie de temps. Supposons que vous ayez une variable DateTime appelée myDate , avec la date avec le temps partiel. Vous pouvez créer un nouvel objet DateTime à partir de celui-ci, sans la partie time, en utilisant ce constructeur:

public DateTime(int year, int month, int day);

comme ceci:

myDate = new DateTime(myDate.Year, myDate.Month, myDate.Day);

de cette façon, vous créez un nouvel objet DateTime basé sur l'ancien, avec 00: 00: 00 comme temps partie.

2
répondu Guillermo Gutiérrez 2014-12-24 16:23:35

créez une structure qui ne contient que les propriétés que vous voulez. Ensuite, une méthode d'extension pour obtenir facilement cette structure à partir d'une instance de DateTime.

public struct DateOnly
{
    public int Day { get; set; }
    public int Month { get; set; }
    public int Year { get; set; }
}

public static class DateOnlyExtensions
{
    public static DateOnly GetDateOnly(this DateTime dt)
    {
        return new DateOnly
        {
            Day = dt.Day,
            Month = dt.Month,
            Year = dt.Year
        };
    }
}

Utilisation

DateTime dt = DateTime.Now;
DateOnly result = dt.GetDateOnly();
2
répondu mason 2017-10-09 12:56:28

utiliser .Date de l'objet DateTime ignore le temps de la partie.

voici le code:

DateTime dateA = DateTime.Now;
DateTime dateB = DateTime.Now.AddHours(1).AddMinutes(10).AddSeconds(14);
Console.WriteLine("Date A: {0}",dateA.ToString("o"));
Console.WriteLine("Date B: {0}", dateB.ToString("o"));
Console.WriteLine(String.Format("Comparing objects A==B? {0}", dateA.Equals(dateB)));
Console.WriteLine(String.Format("Comparing ONLY Date property A==B? {0}", dateA.Date.Equals(dateB.Date)));
Console.ReadLine();

sortie:

>Date A: 2014-09-04T07:53:14.6404013+02:00
>Date B: 2014-09-04T09:03:28.6414014+02:00
>Comparing objects A==B? False
>Comparing ONLY Date property A==B? True
1
répondu Jota 2014-09-04 06:02:41

utiliser un peu de RegEx:

Regex.Match(Date.Now.ToString(), @"^.*?(?= )");

produit une date dans le format: JJ/mm / AAAA

1
répondu DividedByZero 2014-11-06 19:10:56

Pour l'utilisation par les datalist, répéteur.. dans la page aspx:< % # Eval ("Yourdestring").ToString ().Supprimer (10) % >

1
répondu Filip Dialm 2014-12-16 21:25:43

cela pourrait être fait simplement de cette façon:

var dateOnly = new DateTime(dateTime.Year, dateTime.Month, dateTime.Day)
1
répondu HichemSeeSharp 2015-08-23 18:49:09

obtenir la Date partie d'un DateTime objet n'a pas fonctionné pour moi parce que je travaille du côté du client et les valeurs de service web retournés ont quelques null dates. En conséquence, il essaie d'obtenir la Partie Date d'une valeur nulle et il lance une exception runtime. L'exemple suivant montre comment j'ai résolu mon problème:

string dt = employer.BirthDay.ToString();
if(dt == ""){ dt = "N/A";}
else dt = dt.Substring(0,10);
  1. récupérez la valeur DateTime en chaîne dans une variable string.
  2. vérifiez si c'est NULL. Si null, Assignez une variable string.
  3. si ce n'est pas nul, récupérez les 10 premiers caractères de la chaîne de caractères DateTime et assignez-la à la variable string.

je partage ceci pour référence future.

1
répondu apollo 2016-02-16 10:11:48
DateTime dd=DateTiem.Now;
string date=dd.toString("dd/MM/YYYY");
0
répondu James 2014-09-08 07:21:24
static void Main(string[] args)
{
    string dateStrings =  "2014-09-01T03:00:00+00:00" ;

    DateTime convertedDate = DateTime.Parse(dateStrings);
    Console.WriteLine("  {0} ----------------- {1}",

    convertedDate,DateTime.Parse(convertedDate.ToString()).ToString("dd/MM/yyyy"));

    Console.Read();
}
0
répondu ImranNaqvi 2015-07-22 08:29:13

Ce code vous donne une vue claire de l'écriture", 151910920" ainsi que Time séparément

string time = DateTime.Now.Hour.ToString("00") + ":" + DateTime.Now.Minute.ToString("00") + ":" + DateTime.Now.Second.ToString("00");
        string date = DateTime.Now.ToString("M-dd-yyyy");
        MessageBox.Show(date + "\n" + time);

Espérons que cette aide.

0
répondu Zero 2015-11-19 13:51:36