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.

War es hilfreich?

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);
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top