it-swarm.com.de

Wie entferne ich den Zeitanteil des Datums in C # nur im DateTime-Objekt?

Ich muss den Zeitabschnitt des Datums entfernen. Uhrzeit oder wahrscheinlich das Datum im folgenden Format in object-Form und nicht in der Form von string.

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

Ich kann keine string-Konvertierungsmethoden verwenden, da ich das Datum in der object-Form benötige.

Ich habe zuerst versucht, die DateTime in eine string umzuwandeln, das zeitspezifische Datum daraus zu entfernen, aber es fügt 12:00:00 AM hinzu, sobald ich es wieder in DateTimeobject zurück konvertiere.

366
im useless

Verwenden Sie die Eigenschaft Date :

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

Die Variable date enthält das Datum, der Zeitteil ist 00:00:00.

692
driis

Sie können Formatzeichenfolgen verwenden, um der Ausgabezeichenfolge das gewünschte Format zu geben. 

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

Lesen Sie mehr hier .

127
0x49D1

Verwenden Sie die Methode ToShortDateString. Lesen Sie die Dokumentation http://msdn.Microsoft.com/de-de/library/system.datetime.toshortdatestring.aspx .

var dateTimeNow = DateTime.Now; // Return 00/00/0000 00:00:00
var dateOnlyString = dateTimeNow.ToShortDateString(); //Return 00/00/0000
90
Adriano Silva

Schauen Sie sich die DateTime.Date -Eigenschaft an.

Ruft die Datumskomponente dieser Instanz ab.

37
Nick

Die Date-Eigenschaft gibt das Datum um Mitternacht zurück.

Eine Option könnte sein, die einzelnen Werte (Tag/Monat/Jahr) separat abzurufen und in dem gewünschten Typ zu speichern.

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

string.Format("{0}/{1}/{2}", month, day, year);
25
sidprasher

Keine der obigen Antworten löste mein Problem mit Winforms.

der einfachste Weg, umNURdate zu erreichen, ist die einfache Funktion in Datetime:

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

Sie haben nur Datum in Birthday String.

16
MehraD

Versuchen Sie, Ihre eigene Struktur dafür zu erstellen. Das DateTime-Objekt enthält Datum und Uhrzeit

14
Umesh CHILAKA

Du kannst nicht Eine DateTime in .NET hat immer eine Zeit, standardmäßig 00: 00: 00: 000. Die Date-Eigenschaft einer DateTime ist auch eine DateTime (!). Die Standardeinstellung lautet 00: 00: 00: 000.

Dies ist ein Mangel in .NET Framework und es könnte argumentiert werden, dass DateTime in .NET das Single-Responsibility-Prinzip verletzt. 

12
Tomas Vinter
11
VikciaR

Hier ist eine andere Methode mit 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);

Ausgabe:

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

Date Only : 04/09/2016

Dies funktioniert auch, wenn die Datumszeit in der Datenbank gespeichert ist.

Weitere Informationen zum Formatieren von Datum und Uhrzeit finden Sie in den folgenden Links:

Referenz 1

Referenz 2

Hoffnung hilft.

8
stom

Auf diese Weise erhalten Sie nur Datum ohne Uhrzeit

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

Ausgabe = 16.5.2015

7
Mayank Gupta

Ich habe eine DateOnly-Struktur geschrieben. Hierbei wird eine DateTime unter dem Skin verwendet, jedoch werden keine Zeitpunkte öffentlich angezeigt:

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);
    }
}

Dies wird von VB.NET konvertiert. Bitte entschuldigen Sie, wenn einige Konvertierungen nicht 100% sind.

5
Matt Wilko

Ich bin überrascht, dass niemand DateTime.Today erwähnt hat

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

Siehe MSDN

4
LukeF

Verwenden Sie date.ToShortDateString (), um das Datum ohne die Zeitkomponente abzurufen

var date = DateTime.Now
var shortDate = date.ToShortDateString() //will give you 16/01/2019

verwenden Sie date.ToString (), um das Format des Datums anzupassen

var date = DateTime.Now
var shortDate = date.ToString('dd-MMM-yyyy') //will give you 16-Jan-2019
3
Nathanael Mayne

Kam durch diesen Beitrag, als er versuchte, das ursprüngliche Q zu lösen.

Ich verwende Asp.Net und nach einigen Nachforschungen, die ich gefunden habe, wenn Sie an den Wert des Datums im Code dahinter gebunden sind, können Sie die Uhrzeit so einstellen, dass sie nicht auf dem Bildschirm erscheint.

C #:

DateTime Today = DateTime.Now;

aspx:

<%: this.Today.ToShortDateString() %>
3
John

benutzen 

DateTime.Now.ToString("dd-MM-yyyy");
3
James

Wenn Sie es in einen String konvertieren, können Sie dies ganz einfach tun.

Ich nehme Datum als Ihr DateTime-Objekt.

date.ToString("d");

Dadurch erhalten Sie nur das Datum.

2
TAS
string dt = myCalender.SelectedDate.ToString();
string date = dt.Remove(10);
displayDate.Content = date;

Wenn Sie ein Datum aus dem Kalender übernehmen, bekommen wir auch Zeit. Was nicht immer benötigt wird. Damit können wir die Zeit vom Datum entfernen.

2
hizbul25

Ich weiß, dass dies ein alter Beitrag mit vielen Antworten ist, aber ich habe nicht die Möglichkeit gesehen, den Zeitanteil zu entfernen. Angenommen, Sie haben eine DateTime -Variable namens myDate mit dem Datum und dem Zeitteil. Sie können daraus ein neues DateTime -Objekt ohne Zeitanteil erstellen, indem Sie diesen Konstruktor verwenden:

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

So was:

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

Auf diese Weise erstellen Sie ein neues DateTime -Objekt basierend auf dem alten mit 00:00:00 als Zeitabschnitt.

meiner Erfahrung nach hat keine der genannten Lösungen funktioniert, vielleicht weil ich die Zeit aus dem extrahierten Datum aus der Datenbank entfernen wollte.

var date = target_date.Value.ToString("dd/MM/yyyy"); 
2
Daniel

Deklarieren Sie die Variable als Zeichenfolge.

beispiel:

public string dateOfBirth ;

dann vergeben Sie einen Wert wie: 

dateOfBirth = ((DateTime)(datetimevaluefromDB)).ToShortDateString();
2
Saud Khan

Sie können dies für das einzige Datum aus der Datetime versuchen 

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

Wo ist dt DateTime

2
Vikas

Erstellen Sie eine Struktur, die nur die gewünschten Eigenschaften enthält. Dann eine Erweiterungsmethode, um diese Struktur leicht aus einer Instanz von DateTime abzurufen.

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

Verwendungszweck

DateTime dt = DateTime.Now;
DateOnly result = dt.GetDateOnly();
2
mason
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();
}
1
ImranNaqvi

Für die Verwendung durch Datalist, Repeater .. auf der Aspx-Seite: <% # Eval ("YourDateString"). ToString (). Remove (10)%>

1
Filip Dialm

Verwenden Sie .Date eines DateTime-Objekts, um den Zeitabschnitt zu ignorieren.

Hier ist der 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();

Ausgabe:

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

Der Date-Teil eines DateTime-Objekts zu erhalten, hat für mich nicht funktioniert, da ich auf der Clientseite arbeite und die zurückgegebenen Webdienstwerte einige null-Datumsangaben haben. Daher wird versucht, den Date-Teil eines Nullwerts abzurufen, und es wird eine Laufzeitausnahme ausgelöst. Das folgende Beispiel zeigt, wie ich mein Problem gelöst habe:

string dt = employer.BirthDay.ToString();
if(dt == ""){ dt = "N/A";}
else dt = dt.Substring(0,10);
  1. Rufen Sie den DateTime-Wert als Zeichenfolge in eine Zeichenfolgenvariable ab. 
  2. Überprüfen Sie, ob es null ist. Bei null weisen Sie eine Stringvariable zu.
  3. Wenn nicht Null, holen Sie die ersten 10 Zeichen der Zeichenfolge DateTime value ab und weisen Sie sie der Zeichenfolgenvariablen zu.

Ich teile dies zur zukünftigen Referenz.

1
apollo

Verwenden Sie ein bisschen RegEx:

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

Erzeugt ein Datum im Format: TT/MM/JJJJ

1
DividedByZero

Dies könnte einfach auf folgende Weise geschehen:

var dateOnly = new DateTime(dateTime.Year, dateTime.Month, dateTime.Day)
1
HichemSeeSharp

Dieser Code gibt Ihnen eine klare Sicht, sowohl Date als auch Time separat zu schreiben

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

Hoffe das hilft.

1
Zero

Für den Fall, dass Sie die Bindung verwenden möchten und nur den Datumsanteil ohne Zeit anzeigen möchten

ToolTip = "{Binding Transaction Model.Transaction Date, String Format = d}"

0
Kovalenko Ihor

Versuchen Sie dies, wenn Sie eine DateTimeOffset verwenden, wird auch die Zeitzone berücksichtigt

date1 = date1.LocalDateTime.Date;

Wenn Sie Stunden hinzufügen müssen, verwenden Sie diese:

date1 = date1.LocalDateTime.Date;
date1 = date1.AddHours(23).AddMinutes(59).AddSeconds(59);
0
iwhp

Ich denke, Sie würden dies tun: DateTime onlyDate = DateTime.Today.Date; Oder, das ist das gleiche DateTime onlyDate = yourDateTime.Date; Verwenden Sie also die Eigenschaft Date.

0
Carmine Checker

Wenn Sie einen Teil der Zeit aus einer DateTime entfernen möchten, verwenden Sie diesen Code:

DateTime dt = new DateTime();

dt = DateTime.Now; //ex: 31/1/2017 6:30:20 PM

TimeSpan remainingTime = new TimeSpan(0, dt.Hour - 5, dt.Minute - 29, dt.Second - 19);
dt=dt.Add(remainingTime);

label1.Text = dt.ToString("HH:mm:ss"); // must be HH not hh

die Ausgabe: 01:01:01

0
Na'il Laith
DateTime dd=DateTiem.Now;
string date=dd.toString("dd/MM/YYYY");
0
James

Verwenden Sie einfach eine Codezeile:

var dateAndTime = DateTime.Now.Date;
0
NinjaCoder

Verwenden Sie die ToString () -Methode, um nur den Datumsanteil abzurufen.

beispiel: DateTime.Now.Date.ToString ("TT/MM/JJJJ")

Hinweis: Das mm im Format TT/MM/JJJJ muss großgeschrieben werden

0
nate.py