Конвертировать из часового пояса в короткое время C # - PullRequest
0 голосов
/ 02 июля 2018

У меня есть данные даты и времени, которые выглядят так: 2018-06-29T22:10:33Z.

Мне нужно это в формате короткой даты - 06/29/2018, т.е. без временной части.

Я пробовал следующее в C #:

ConvertToDateTime(dateString);
DateTime.Parse(dateString);

Ошибки с обоими.

Я прибегаю к dateString.substring(0,10), чтобы получить первые 10 символов и преобразовать их в дату.

Есть ли лучший метод?

Ответы [ 2 ]

0 голосов
/ 02 июля 2018

Прежде всего, формат даты выглядит не очень хорошо отформатированным. Формат, который вы должны получить, должен выглядеть так: «гггг-мм-ддтчч: мм: сс.фффффффК» (т. Е. «2018-06-29T22: 10: 05.1440844Z»).

Предполагая, что в предоставленной дате выборки была опечатка, вот несколько примеров для преобразования строки даты и времени (в формате UTC) в DateTime:

var dateString = "2018-06-29T22:10:05.1440844Z";

var datetime = DateTime.ParseExact(dateString, "yyyy-MM-ddTHH:mm:ss.fffffffK", CultureInfo.InvariantCulture);
var date = datetime.Date;

или

var datetime = DateTime.ParseExact(dateString, "o", CultureInfo.InvariantCulture);
var date = datetime.Date;

Вы должны принять во внимание, что вы получаете дату в формате UTC, а также должны учитываться преобразования часовых поясов. Кроме того, когда берется только часть даты, для части времени устанавливается значение «12:00:00 AM».

0 голосов
/ 02 июля 2018

Вы можете использовать метод DateTime.TryParse. то есть:

string s = "2018-06-29T22:10:33Z";
DateTime t;
if (DateTime.TryParse(s, out t))
{
    Console.WriteLine(t.ToShortDateString());
}

Чтобы получить дату UTC:

string s = "2018-06-29T22:10:33Z";

DateTime t;
if (DateTime.TryParse(s, out t))
{
    Console.WriteLine(t.ToUniversalTime().ToShortDateString());
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...