So erhalten Sie nur die Uhrzeit von Datum und Uhrzeit C # [geschlossen]

144

Angenommen, ich habe den Wert 22.06.2009 10:00:00 Uhr. Wie bekomme ich ab diesem Datum nur 10:00 Uhr.

Tyler Durden
quelle
15
Ist das eine Zeichenfolge oder eine DateTime?
Colin Burnett

Antworten:

201

Sie haben dafür viele Möglichkeiten:

DateTime dt = DateTime.Parse("6/22/2009 07:00:00 AM");

dt.ToString("HH:mm"); // 07:00 // 24 hour clock // hour is always 2 digits
dt.ToString("hh:mm tt"); // 07:00 AM // 12 hour clock // hour is always 2 digits
dt.ToString("H:mm"); // 7:00 // 24 hour clock
dt.ToString("h:mm tt"); // 7:00 AM // 12 hour clock

Hilfreicher Link: DateTime.ToString () Muster

Theofanis Pantelides
quelle
16
@MetroSmurf - dem OP ist natürlich nicht klar, was er tun will. Einer meiner Lieblingshasse ist es, zu früh zu Fäden zu gehen. Ich hatte einen Kollegen, der alles in String umwandelte - sogar Doppel usw. Es ist ein Unfall, der darauf wartet, passiert zu werden. Ich würde sagen, konvertieren Sie Objekte nicht in Zeichenfolgen, bis Sie das Objekt einem Menschen anzeigen möchten. Bis dahin bleib bei den Objekten.
Paul
1
Zum schnellen Nachschlagen sssind Sekunden mit einer führenden Null unds ist Sekunden ohne
Beevee
beste Antwort bisher
Tk1993
76

Von a DateTimekönnen Sie verwenden .TimeOfDay- aber das gibt Ihnen eine TimeSpanDarstellung der Zeit in den Tag (10 Stunden).

Marc Gravell
quelle
oder Sonderfälle mit Formatierung auf ToString ("Formatcodes")
kenny
61

In C # gibt es nur den DateTime-Typ, der sowohl aus dem Datums- als auch aus dem Zeitanteil besteht. Wenn Sie sich nicht für den Date-Teil von DateTime interessieren, setzen Sie ihn wie folgt auf den Standardwert:

DateTime myTime = default(DateTime).Add(myDateTime.TimeOfDay)

Auf diese Weise können Sie in allen Versionen von .NET konsistent sein, auch wenn Microsoft beschließt, das Basisdatum auf etwas anderes als den 1.1.10001 zu ändern.

Panpawel
quelle
19
Dies sollte die akzeptierte Antwort sein. Die Frage war, die Zeit aus einer DateTime zu extrahieren und nicht als Zeichenfolge zu formatieren.
ASalazar
Insbesondere ist es "in .NET", nicht "in C #".
rory.ap
22

Vielleicht möchten Sie in DateTime.ToShortTimeString () schauen -Methode .

Es gibt auch viele andere Methoden und Eigenschaften für das DateTime- Objekt, mit denen Sie das Datum oder die Uhrzeit nach Belieben formatieren können. Schauen Sie sich einfach die Dokumentation an.

schwer
quelle
+1 Dies ist die sauberste Lösung, wenn Sie in einer internationalen Umgebung arbeiten, in der die Zeitausgabe lokalisiert werden muss, da die Zeit in dem Format zurückgegeben wird, auf das das aktuelle System eingestellt wurde.
Aggaton
11

Versuche dies:

TimeSpan TodayTime = DateTime.Now.TimeOfDay;
Javier Andres Caicedo
quelle
6

Es gibt verschiedene Möglichkeiten, dies zu tun. Sie können verwenden, DateTime.Now.ToLongTimeString()was nur die Zeit im Zeichenfolgenformat zurückgibt.

Tarakaram Gopal
quelle
Sie meinten wahrscheinlich DateTime.ToLongTimeString()eher als DateTime.Now.ToLongTimeString(). Angesichts des Alters dieses Threads ist es am besten, ihn nicht wiederzubeleben, es sei denn, die Antwort trägt erheblich zur Verbesserung gegenüber früheren Antworten bei.
Leigh
5

Sie können einfach schreiben

string time = dateTimeObect.ToString("HH:mm");
Kishan Gupta
quelle
4
Dies fügt absolut nichts zu dem hinzu, was bereits vor über 4 Jahren eingereicht wurde!
Paul
5

Sie können dies verwenden

lblTime.Text = DateTime.Now.TimeOfDay.ToString(); 

Es ist Echtzeit mit einem Millisekundenwert und wird nur auf Zeit eingestellt.

Chrysanly
quelle
TimeOfDay ist ein guter Weg, aber es bringt auch einen Teil von Millisekunden, den Sie benötigen, um Ihre Zeit mit dem Standardtyp zu formatieren.
Sajadre
5
DateTime now = DateTime.Now;

now.ToLongDateString();    // Wednesday, January 2, 2019
now.ToLongTimeString();    // 2:33:59 PM
now.ToShortDateString();   // 1/2/2019
now.ToShortTimeString();   // 2:16 PM
now.ToString();            // 1/2/2019 2:33:59 PM
Görkem Hacıoğlu
quelle
4

Das funktioniert bei mir. Ich habe es entdeckt, als ich mit DateTime.Date arbeiten musste, um nur den Datumsteil zu erhalten.

var wholeDate = DateTime.Parse("6/22/2009 10:00:00 AM");
var time = wholeDate - wholeDate.Date;
ProfK
quelle
3

Sie können ToString("T")für lange Zeit oder ToString("t")für kurze Zeit verwenden.

Mattenmatten
quelle
2

Wenn Sie die Rasteransicht verwenden, können Sie nur die Zeit anhand eines DataFormatString="{0:t}" Beispiels anzeigen :

    By bind the value:-
<asp:Label ID="lblreg" runat="server" Text='<%#Eval("Registration_Time ", "{0:t}") %>'></asp:Label>

By bound filed:-
<asp:BoundField DataField=" Registration_Time" HeaderText="Brithday" SortExpression=" Registration Time " DataFormatString="{0:t}"/>
Bipul Roy
quelle
1

Wenn Sie die Zeiten und nicht die Daten vergleichen möchten, können Sie einfach ein Standardvergleichsdatum festlegen oder mit dem von Ihnen verwendeten Datum übereinstimmen, wie in ...

DateTime time = DateTime.Parse("6/22/2009 10:00AM");
DateTime compare = DateTime.Parse(time.ToShortDateString() + " 2:00PM");
bool greater = (time > compare);

Möglicherweise gibt es bessere Möglichkeiten, aber Ihre Daten stimmen überein.

Hugoware
quelle
1

Sie müssen auch DateTime Kind berücksichtigen.

public static DateTime GetTime(this DateTime d)
{
    return new DateTime(d.TimeOfDay.Ticks, d.Kind);
}
user3720899
quelle
Es hat keinen Sinn, diese Frage zu beantworten. Sie wurde vor 9 Jahren gestellt. Auch auf diese Frage gibt es schon viele gute Antworten.
Benshabatnoam
Sie geben die Zeit nicht zurück. Sie sollten Ihre Antwort überprüfen
Yepeekai
@Yepeekai In .NET gibt es keine Zeitklasse. Daher ist eine DateTime-Instanz ohne Date-Teil eine der Optionen, die Sie ausführen können. Sie können auch eine Zeichenfolge zurückgeben, diese können Sie jedoch in DateTime-Vorgängen verwenden. Ich denke, Sie könnten auch eine Zeitspanne in Betracht ziehen.
user3720899
Imo ist die "neue DateTime (d.TimeOfDay.Ticks)" die bisher sauberste Antwort
Fabianus