как преобразовать строку datetime в формат времени utc в GMT.конвертировать строку datetime в Utc
var x = "02/01/2017 10:00";
var z = DateTime.ParseExact(x, "ddd, dd MMM yyyy HH:mm:ss 'GMT'", CultureInfo.InvariantCulture);
как преобразовать строку datetime в формат времени utc в GMT.конвертировать строку datetime в Utc
var x = "02/01/2017 10:00";
var z = DateTime.ParseExact(x, "ddd, dd MMM yyyy HH:mm:ss 'GMT'", CultureInfo.InvariantCulture);
На самом деле, что вы попробовали это не так, что вы можете сделать, это, получить эквивалент значения DateTime к данной дате, а затем преобразовать их в то время UTC, попробовать что-то вроде следующего:
string inputDateStr = "02/01/2017 10:00";
DateTime inputDate;
if (DateTime.TryParseExact(inputDateStr, "MM/dd/yyyy HH:mm", CultureInfo.InvariantCulture, DateTimeStyles.None, out inputDate))
{
Console.WriteLine("Date time Now : {0} ", inputDate);
Console.WriteLine("Date time UTC : {0} ", inputDate.ToUniversalTime().ToString("ddd, dd MMM yyyy HH:mm:ss 'GMT'"));
}
Привет. Спасибо за рабочий пример. как я могу получить inputDate в datetime, а не в строке. – user3399326
, если вход находится в DateTime, затем используйте 'inputDate.ToUniversalTime(). ToString (" ddd, dd MMM yyyy HH: mm: ss 'GMT' ")' только нет необходимости в преобразовании –
Мне нужен формат вводаDateTime в формате datetime. поэтому я сделал inputDate.ToUniversalTime(). ToString ("ddd, dd MMM yyyy HH: mm: ss 'GMT'"). ToDateTime(), чтобы преобразовать в datetime. – user3399326
Я не уверен, что вы хотели сделать. Но, Universal Time, Zulu время и UTC эффективно современные названия среднего времени по Гринвичу (GMT). Таким образом, оба момента будут одинаковыми. Вы можете использовать метод DateTime.ToUniversalTime()
или DateTime.UtcNow
, чтобы получить время UTC.
Непонятно, что вы просите ... UTC - это не формат, это часовой пояс, эквивалентный GMT (ну, на самом деле это не совсем верно, но для целей этого вопроса он должен
Что такое poin t во времени ваша строка представляет? Это UTC? Или это местное время в Москве? У вас должен быть ответ на этот вопрос, потому что они совершенно разные времена.
Если строка представляет время UTC, то вы можете сделать что-то вроде этого:
// первый разобрать его на объект DateTime. Обратите внимание, что строка формата соответствует строкам, которые у вас есть - в вашем коде они были совершенно разными.
var dateTimeWithUnspecifiedKind = DateTime.ParseExact(x, "dd/MM/yyyy HH:mm", CultureInfo.InvariantCulture);
Так как у вас есть объект datetime. У него есть свойство «Вид» Unspecified. Таким образом, он не хранит никакой информации, чтобы указать, что она должна быть UTC, а не Москва или Нью-Йорк.
// поэтому мы делаем это ...
var dateTimeAsUtc = DateTime.SpecifyKind(dateTimeWithUnspecifiedKind, DateTimeKind.Utc);
Это означает, что «держать число же, но обратите внимание, что даты и времени должна быть интерпретирована как UTC DateTime».
Затем, если вы хотите, чтобы преобразовать его обратно в строку, вы можете сделать что-то вроде:
var s = dateTimeAsUtc.ToString("O");
который даст вам хорошее представление:
2017-01-02T10:00:00.0000000Z
Вам повезло, вы заинтересован в UTC. Класс datetime может использовать только UTC, «local» (что бы это ни было) или «Unspecified». Это не очень полезно для такого рода вещей. DateTimeOffset немного лучше - это в основном DateTime, но он также сохраняет разницу между UTC и смещением, которое действует в то время.
Это может быть все, что вам нужно. Если вам когда-нибудь понадобится реальная ясность вокруг этого материала, взгляните на время Noda - альтернативный набор классов даты и времени для .NET.
Пожалуйста, отформатируйте разделы кода, используя кнопку '{}', чтобы ваша запись была более читаемой. – codeforester
Извините, это мой первый пост - я буду читать форматирование до следующего раза! –
Непонятно, что вы просите. Пожалуйста, укажите, что вы ожидаете в качестве вывода – NineBerry