Отформатируйте строку для правильного отображения даты.

StackOverflow https://stackoverflow.com/questions/1188885

Вопрос

Мне нужна помощь в преобразовании этой строки --> 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);
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top