Dar formato a una cadena que se mostrará la fecha correcta
-
19-09-2019 - |
Pregunta
Necesito ayuda para convertir esta cadena -> 20090727 10:16:36:643
a -> 07/27/2009 10:16:36
La fecha y hora originales están siendo devueltos por la función SynchronizationAgent.LastUpdated()
, que devuelve una cadena con el formato anterior.
pregunta original: preservado para referencia
Tengo este ->
HUD.LastSyncDate = mergeSubscription.SynchronizationAgent.LastUpdatedTime;
¿Qué está estableciendo una propiedad que tiene este aspecto ->
public static string LastSyncDate
{
get { return _lastSyncDate; }
set
{
_lastSyncDate = String.Format(CultureInfo.InvariantCulture,"{0:G}", value);
}
}
Por desgracia, con o sin la String.Format
la fecha que se muestra tiene este aspecto -> 20090727 10:16:36:643
He intentado varias variaciones para dar formato a la forma que yo quiero. ¿Qué me falta?
Sobre la base de las sugerencias a continuación ( Medio de Joel ), he implementado los cambios sugeridos, pero todavía estoy recibiendo un "String is not a valid DateTime error"
También probé la aplicación de este ->
HUD.LastSyncDate = DateTime.ParseExact(mergeSubscription.SynchronizationAgent.LastUpdatedTime,"yyyyMMdd HH:mm:ss:fff",CultureInfo.InvariantCulture);
pero aún nada.
Solución
Me parece que LastUpdatedTime es en realidad una cadena (ya que se puede hacer la tarea) no es un DateTime. En ese caso, el formato aplicado no hará nada. Usted querrá analizar el LastUpdatedTime en un DateTime a continuación, cambiar el formato en el formato que desee antes de asignarlo a la cadena.
DateTime lastUpdated = DateTime.Parse( mergeSubscription.SynchronizationAgent.LastUpdatedTime );
HUD.LastSyncDate = string.Format( "{0:G}", lastUpdated );
public static string LastSyncDate { get; set; }
Tenga en cuenta que puede que tenga que utilizar ParseExact lugar.
DateTime lastUpdated = DateTime.ParseExact( "yyyyMMdd HH:mm:ss:fff",
...,
CultureInfo.InvariantCulture );
Otros consejos
HUD.LastSyncDate = DateTime.Parse(mergeSubscription.SynchronizationAgent.LastUpdatedTime).ToString("MM/dd/yyyy")
Usted puede poner cualquier href="http://msdn.microsoft.com/en-us/library/8kb3ddd4.aspx" rel="nofollow noreferrer"> cadena de formato desea allí. Pero parece que lo que realmente quiere es algo más parecido a esto:
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"); }
}
Sigue así como la fecha y hora en el fondo y sólo tiene que utilizar la propiedad de cadena para su visualización.
¿Qué quieres hacer? Se obtiene una cadena, lo pasa a String.Format()
y almacenarlo en un campo de cadena. ¿Quieres cambiar el formato de la cadena? En este caso hay que analizar la cadena de nuevo a DateTime
y dar formato a este valor nuevo.
DateTime dateTime;
if (DateTime.TryParse(value, out dateTime))
{
lastSyncDate = String.Format(CultureInfo.InvariantCulture,"{0:G}", dateTime);
}
else
{
HandleInvalidInput(value);
}