Question

J'ai besoin d'aide pour convertir cette chaîne -> 20090727 10:16:36:643 -> 07/27/2009 10:16:36

La date et l'heure d'origine sont renvoyés par la fonction SynchronizationAgent.LastUpdated(), qui renvoie une chaîne dans le format ci-dessus.


Question originale: conservée pour référence

Je cette ->

 HUD.LastSyncDate = mergeSubscription.SynchronizationAgent.LastUpdatedTime;

Ce qui est de définir une propriété qui ressemble à ceci ->

public static string LastSyncDate
    {
        get { return _lastSyncDate; }
        set
        {
            _lastSyncDate = String.Format(CultureInfo.InvariantCulture,"{0:G}", value);
        }
    }

Malheureusement, avec ou sans String.Format la date qui apparaît ressemble à ceci -> 20090727 10:16:36:643

J'ai essayé plusieurs variantes de ce format comme je le veux. Qu'est-ce que je manque?

D'après les suggestions ci-dessous ( La plupart du temps Joël ), je mis à exécution les changements proposés, mais je reçois toujours un "String is not a valid DateTime error"

J'ai aussi essayé l'application de cette ->

HUD.LastSyncDate = DateTime.ParseExact(mergeSubscription.SynchronizationAgent.LastUpdatedTime,"yyyyMMdd HH:mm:ss:fff",CultureInfo.InvariantCulture);

mais toujours rien.

Était-ce utile?

La solution

Il me semble que LastUpdatedTime est en fait une chaîne (puisque vous pouvez faire la cession) ne DateTime. Dans ce cas, le format appliqué ne fera rien. Vous voulez analyser le LastUpdatedTime dans un DateTime puis reformater dans le format que vous voulez avant de l'assigner à votre chaîne.

DateTime lastUpdated = DateTime.Parse( mergeSubscription.SynchronizationAgent.LastUpdatedTime );
HUD.LastSyncDate = string.Format( "{0:G}", lastUpdated );

public static string LastSyncDate { get; set; }

Notez que vous devrez peut-être utiliser ParseExact à la place.

DateTime lastUpdated = DateTime.ParseExact( "yyyyMMdd HH:mm:ss:fff",
                                            ...,
                                            CultureInfo.InvariantCulture );

Autres conseils

HUD.LastSyncDate = DateTime.Parse(mergeSubscription.SynchronizationAgent.LastUpdatedTime).ToString("MM/dd/yyyy")

Vous pouvez mettre tout que vous voulez là. Mais cela ressemble à ce que vous voulez vraiment est quelque chose comme ceci:

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

Gardez-le comme datetime en arrière-plan et il suffit d'utiliser la propriété de chaîne pour l'affichage.

Que voulez-vous faire? Vous obtenez une chaîne, passez à String.Format() et le stocker dans un champ de chaîne. Voulez-vous reformater la chaîne? Dans ce cas, vous devez analyser la chaîne de retour à DateTime et formater à nouveau cette valeur.

DateTime dateTime;
if (DateTime.TryParse(value, out dateTime))
{
    lastSyncDate = String.Format(CultureInfo.InvariantCulture,"{0:G}", dateTime);
}
else
{
    HandleInvalidInput(value);
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top