C# Разбор строки в DateTime с определенным часовым поясомC#

Место общения программистов C#
Ответить
Anonymous
 C# Разбор строки в DateTime с определенным часовым поясом

Сообщение Anonymous »

Я немного боролся с этим, поэтому перейду к SO.

У меня есть приложение, в котором мне нужно анализировать строки в даты и время. Строки выглядят следующим образом:

"201503131557"


(они всегда будут в формате «ггггММддЧЧмм») и всегда будут соответствовать центральному стандартному времени (или центральному летнему времени в зависимости от даты), даже если они этого не указывают.

Когда я анализирую их, я понимаю, что оно преобразует их в местное время. Я использую Azure PaaS и не хочу менять его для работы в CST только для поддержки этой операции.

Как написать код, работающий как локально, так и в Azure PaaS, который будет правильно анализировать эти даты в DateTimes, устанавливая для часового пояса CST?

Вот быстрый модульный тест, который я написал, чтобы доказать ответ Мэтта Джонсона.

[TestMethod]
public void DateTests()
{
var unSpecDt = DateTime.ParseExact("201503131557", "yyyyMMddHHmm", CultureInfo.InvariantCulture);
var tz = TimeZoneInfo.FindSystemTimeZoneById("Central Standard Time");

var utcDt = TimeZoneInfo.ConvertTimeToUtc(unSpecDt, tz);

var offset = tz.GetUtcOffset(unSpecDt);
var dto =new DateTimeOffset(unSpecDt, offset);

var cstDt = dto.DateTime;

Assert.IsTrue(cstDt.Hour - utcDt.Hour == offset.Hours);
}


Подробнее здесь: https://stackoverflow.com/questions/568 ... c-timezone
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»