Отформатируйте строку для правильного отображения даты.
-
19-09-2019 - |
Вопрос
Мне нужна помощь в преобразовании этой строки --> 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);
но все равно ничего.
Решение
Мне кажется, что 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"); }
}
Сохраните его как дату и время в фоновом режиме и просто используйте свойство string для отображения.
Что ты хочешь делать?Вы получаете строку, передаете ее String.Format()
и сохраните его в строковом поле.Вы хотите переформатировать строку?В этом случае вам придется проанализировать строку обратно в DateTime
и снова отформатируйте это значение.
DateTime dateTime;
if (DateTime.TryParse(value, out dateTime))
{
lastSyncDate = String.Format(CultureInfo.InvariantCulture,"{0:G}", dateTime);
}
else
{
HandleInvalidInput(value);
}