Отформатируйте строку для правильного отображения даты
Мне нужна помощь в преобразовании этой строки -> 20090727 10:16:36:643
к -> 07/27/2009 10:16:36
Исходная дата и время возвращаются SynchronizationAgent.LastUpdated()
функция, которая возвращает строку в вышеуказанном формате.
Оригинальный вопрос: сохранено для справки
У меня есть это ->
HUD.LastSyncDate = mergeSubscription.SynchronizationAgent.LastUpdatedTime;
Который устанавливает свойство, которое выглядит следующим образом ->
public static string LastSyncDate
{
get { return _lastSyncDate; }
set
{
_lastSyncDate = String.Format(CultureInfo.InvariantCulture,"{0:G}", value);
}
}
К сожалению, с или без String.Format
отображаемая дата выглядит следующим образом -> 20090727 10:16:36:643
Я пробовал несколько вариантов, чтобы отформатировать его так, как я хочу. Что мне не хватает?
Основываясь на приведенных ниже предложениях (восновном Джоэла), я внес предложенные изменения, но все еще получаю "String is not a valid DateTime error"
Я также пытался реализовать это ->
HUD.LastSyncDate = DateTime.ParseExact(mergeSubscription.SynchronizationAgent.LastUpdatedTime,"yyyyMMdd HH:mm:ss:fff",CultureInfo.InvariantCulture);
но все равно ничего.
3 ответа
Мне кажется, что LastUpdatedTime на самом деле является строкой (так как вы можете сделать назначение), а не DateTime. В этом случае применяемый формат ничего не сделает. Вы захотите проанализировать LastUpdatedTime в DateTime, а затем переформатировать в нужный формат, прежде чем присваивать его своей строке.
DateTime lastUpdated = DateTime.Parse( mergeSubscription.SynchronizationAgent.LastUpdatedTime );
HUD.LastSyncDate = string.Format( "{0:G}", lastUpdated );
public static string LastSyncDate { get; set; }
Обратите внимание, что вам может понадобиться использовать ParseExact вместо этого.
DateTime lastUpdated = DateTime.ParseExact( "yyyyMMdd HH:mm:ss:fff",
...,
CultureInfo.InvariantCulture );
HUD.LastSyncDate = DateTime.Parse(mergeSubscription.SynchronizationAgent.LastUpdatedTime).ToString("MM/dd/yyyy")
Вы можете поместить туда любую строку формата, какую захотите. Но это звучит так, как будто вы действительно хотите что-то вроде этого:
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"); }
}
Держите это как datetime в фоновом режиме и просто используйте строковое свойство для отображения.
Что ты хочешь делать? Вы получаете строку, передайте ее String.Format()
и сохранить его в строковом поле. Вы хотите переформатировать строку? В этом случае вы должны проанализировать строку обратно DateTime
и снова отформатируйте это значение.
DateTime dateTime;
if (DateTime.TryParse(value, out dateTime))
{
lastSyncDate = String.Format(CultureInfo.InvariantCulture,"{0:G}", dateTime);
}
else
{
HandleInvalidInput(value);
}