Formattare una stringa da visualizzare correttamente la data
-
19-09-2019 - |
Domanda
Ho bisogno di aiuto convertire questa stringa -> 20090727 10:16:36:643
a -> 07/27/2009 10:16:36
La data e l'ora originali vengono restituiti dalla funzione SynchronizationAgent.LastUpdated()
, che restituisce una stringa nel formato di cui sopra.
domanda originale: conservato per riferimento
Ho questo ->
HUD.LastSyncDate = mergeSubscription.SynchronizationAgent.LastUpdatedTime;
Che è l'impostazione di una proprietà che assomiglia a questo ->
public static string LastSyncDate
{
get { return _lastSyncDate; }
set
{
_lastSyncDate = String.Format(CultureInfo.InvariantCulture,"{0:G}", value);
}
}
Purtroppo, con o senza l'String.Format
la data che viene visualizzata aspetto come questo -> 20090727 10:16:36:643
Ho provato diverse varianti di formattarlo nel modo desiderato. Che cosa mi manca?
In base ai suggerimenti riportati di seguito ( Per lo più di Joel ), ho implementato le modifiche suggerite, ma ancora sto ottenendo un "String is not a valid DateTime error"
Ho provato anche l'attuazione del presente ->
HUD.LastSyncDate = DateTime.ParseExact(mergeSubscription.SynchronizationAgent.LastUpdatedTime,"yyyyMMdd HH:mm:ss:fff",CultureInfo.InvariantCulture);
, ma ancora niente.
Soluzione
Mi sembra che LastUpdatedTime è in realtà una stringa (dato che è possibile fare l'assegnazione) non un DateTime. In tal caso, il formato applicato non farà nulla. Ti consigliamo di analizzare il LastUpdatedTime in un DateTime poi riformattare nel formato che si desidera prima di assegnarlo alla stringa.
DateTime lastUpdated = DateTime.Parse( mergeSubscription.SynchronizationAgent.LastUpdatedTime );
HUD.LastSyncDate = string.Format( "{0:G}", lastUpdated );
public static string LastSyncDate { get; set; }
Si noti che è necessario utilizzare ParseExact posto.
DateTime lastUpdated = DateTime.ParseExact( "yyyyMMdd HH:mm:ss:fff",
...,
CultureInfo.InvariantCulture );
Altri suggerimenti
HUD.LastSyncDate = DateTime.Parse(mergeSubscription.SynchronizationAgent.LastUpdatedTime).ToString("MM/dd/yyyy")
È possibile inserire qualsiasi href="http://msdn.microsoft.com/en-us/library/8kb3ddd4.aspx" rel="nofollow noreferrer"> stringa si vuole lì. Ma suona come quello che si vuole veramente è qualcosa di più simile a questo:
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"); }
}
tenerlo come datetime in background e basta usare la proprietà di stringa per la visualizzazione.
Che cosa vuoi fare? È possibile ottenere una stringa, passa a String.Format()
e conservarlo in un campo di stringa. Vuoi riformattare la stringa? In questo caso è necessario analizzare la stringa di nuovo a DateTime
e formattare di nuovo il valore.
DateTime dateTime;
if (DateTime.TryParse(value, out dateTime))
{
lastSyncDate = String.Format(CultureInfo.InvariantCulture,"{0:G}", dateTime);
}
else
{
HandleInvalidInput(value);
}