Formatieren Sie eine Zeichenfolge, die das Datum korrekt anzuzeigen
-
19-09-2019 - |
Frage
Ich brauche Hilfe diese Zeichenfolge Umwandlung -> 20090727 10:16:36:643
-> 07/27/2009 10:16:36
Das ursprüngliche Datum und die Uhrzeit werden von der SynchronizationAgent.LastUpdated()
Funktion zurückgegeben, die einen String in dem obigen Format zurück.
Original Frage: Referenz aufbewahrt
Ich habe dieses ->
HUD.LastSyncDate = mergeSubscription.SynchronizationAgent.LastUpdatedTime;
, die eine Eigenschaft, dass wie folgt aussieht setzt ->
public static string LastSyncDate
{
get { return _lastSyncDate; }
set
{
_lastSyncDate = String.Format(CultureInfo.InvariantCulture,"{0:G}", value);
}
}
Leider mit oder ohne String.Format
das Datum, das wie folgt aussieht angezeigt wird -> 20090727 10:16:36:643
Ich habe mehrere Varianten versucht, es so, wie ich will Format. Was bin ich?
Basierend auf den unten Vorschläge ( Meist Joels ), ich implementiert, um die vorgeschlagenen Änderungen, aber ich bin immer noch ein "String is not a valid DateTime error"
bekommen
Ich habe auch versucht, diese Umsetzung ->
HUD.LastSyncDate = DateTime.ParseExact(mergeSubscription.SynchronizationAgent.LastUpdatedTime,"yyyyMMdd HH:mm:ss:fff",CultureInfo.InvariantCulture);
aber immer noch nichts.
Lösung
Es scheint mir, dass LastUpdatedTime ist eigentlich eine Zeichenfolge (da Sie die Zuordnung tun) keinen Datetime. In diesem Fall angewandt das Format wird nichts tun. Sie verlassen nun die LastUpdatedTime in einem DateTime- dann umformatieren in das Format analysieren möchten, dass Sie wollen, bevor es zu einem String zuweisen.
DateTime lastUpdated = DateTime.Parse( mergeSubscription.SynchronizationAgent.LastUpdatedTime );
HUD.LastSyncDate = string.Format( "{0:G}", lastUpdated );
public static string LastSyncDate { get; set; }
Beachten Sie, dass Sie benötigen ParseExact stattdessen verwenden.
DateTime lastUpdated = DateTime.ParseExact( "yyyyMMdd HH:mm:ss:fff",
...,
CultureInfo.InvariantCulture );
Andere Tipps
HUD.LastSyncDate = DateTime.Parse(mergeSubscription.SynchronizationAgent.LastUpdatedTime).ToString("MM/dd/yyyy")
Sie können setzen jede Format-String es möchten. Aber es klingt wie das, was Sie wirklich wollen, etwas mehr ist wie folgt:
private static DateTime _lastSyncDate;
public static DateTime LastSyncDate
{
get { return _lastSyncDate; }
set { _lastSyncDate = value;}
}
public static string LastSyncDateString
{
get { return LastSyncDate.ToString("MM/dd/yyyy"); }
}
Halten Sie es als Datum im Hintergrund und nur die String-Eigenschaft für die Anzeige verwendet werden.
Was möchten Sie tun? Sie erhalten eine Zeichenfolge, geben es an String.Format()
und speichern sie in einem String-Feld. Wollen Sie die Zeichenfolge zu formatieren? In diesem Fall müssen Sie die Zeichenfolge zurück zu DateTime
analysieren und diesen Wert formatiert wieder.
DateTime dateTime;
if (DateTime.TryParse(value, out dateTime))
{
lastSyncDate = String.Format(CultureInfo.InvariantCulture,"{0:G}", dateTime);
}
else
{
HandleInvalidInput(value);
}