2015-04-23 8 views
3

Каков наилучший и быстрый способ преобразования DateTime в этот формат?Преобразование DateTime в определенный формат

2015-03-26T18: 02: 58.145798Z

В настоящее время я получаю дату с сервера, и я смог разобрать его и преобразовать дату, чтобы DateTime и ToString() выход что-то вроде этого:

26/03/2015 18:02:58

Для преобразования даты я использую эту строку кода:

var parsedDate = DateTime.Parse("2015-03-26T18:02:58.145798Z", CultureInfo.InvariantCulture, DateTimeStyles.RoundtripKind); 

Каков наилучший способ преобразования parsedDate в исходный формат?

EDIT: Я хочу, чтобы преобразовать DateTime в этот формат 2015-03-26T18: 02: 58.145798Z как строка

+0

Что вам нужно? Вы хотите преобразовать его в String? –

+0

ToString («O») почти выполняет задание, но проблема в том, что отсутствует Z в конце строки, любая идея? – frenk91

+0

Z не пропал без вести, в какой каркасной версии вы? –

ответ

7

Если у вас есть DateTime объект, который вы можете преобразовать его в строку с конкретным форматом при использовании в качестве O спецификатора формата:

parsedDate.ToString("O") 

или

parsedDate.ToUniversalTime().ToString("O") // if parsedDate is not UTC 

возвращается "2015-03-26T18:02:58.1457980Z".


Если DateTimeKind вашего DateTime объекта не Utc, то вы не получите Z расширение в конце строки в соответствии с ISO8601. В приведенном примере Z присутствует, потому что DateTime.Parse узнает его и возвращает DateTime в Utc. Если Z отсутствует в исходной строке, которую вы анализируете, вы все же можете считать ее UTC, используя ToUniversalTime() в объекте с датой.

+0

uotput с использованием ToString («O») - это 2015-04-23T08: 03: 39.0000000, он пропускает Z в конце – frenk91

+1

@Default @ frenk91 Потому что вы используете 'DateTime.Now', у которого есть' DateTimeKind.Local'. В синтаксическом 'DateTime' в примере есть' DateTimeKind.Utc', в этом случае в конце будет 'Z'. – Dirk

+0

@Dirk вам нужно исправить parsedDate.UtcNow, это не сработает. Добавьте DateTime.UtcNow в качестве альтернативы и объясните, почему Z только в конце для UTC –

4

Ответ почти что сказал @Dirk:

parsedDate.ToString("O") является линия, но вы должны преобразовать DateTime в формате UTC: вот как вы получите «Z» в конце.

См. https://msdn.microsoft.com/en-us/library/az4se3k1%28v=vs.110%29.aspx для получения дополнительной информации.

Edit:

Чтобы преобразовать DateTime в формате UTC, используйте метод ToUniversalTime().

Смежные вопросы