C# Анализ DateTime в определенный часовой пояс, если смещение не указаноC#

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

Сообщение Anonymous »

У меня есть служебный метод, который пытается проанализировать строку даты и времени в дату и время. Часть этого ниже.

Код: Выделить всё

 if (dateTime is { Kind: DateTimeKind.Unspecified, TimeOfDay.Ticks: > 0 })
{
var cst = TimeZoneInfo.FindSystemTimeZoneById("Central Standard Time");
dateTime = TimeZoneInfo.ConvertTimeToUtc(dateTime, cst);
}
return dateTime.ToUniversalTime();
иногда в строках, которые пытались проанализировать, не указано смещение часового пояса. Но по сути это Central Standard Times. Например, это строковое значение «20241010091157» должно быть 10.10.2024 09:11:57 CST. Мой служебный метод пытается установить часовой пояс для дат и времени, для которых не указан тип, но все еще имеют значения времени.
Следующий модульный тест проходит успешно, когда я запускаю локально на компьютере в CST-время. зоны, но происходит сбой при запуске агента сборки.

Код: Выделить всё

    message.PV1.AdmitDateTime.Time.Value = "20241010091157";

var hl7DateTime = hl7Utils.GetHl7DateTimeUtc(message.PV1.AdmitDateTime);
Assert.IsNotNull(hl7DateTime);
Assert.AreEqual(2024, hl7DateTime.Value.Year);
Assert.AreEqual(10, hl7DateTime.Value.Month);
Assert.AreEqual(10, hl7DateTime.Value.Day);
Assert.AreEqual(14, hl7DateTime.Value.Hour);
Assert.AreEqual(11, hl7DateTime.Value.Minute);
Assert.AreEqual(57, hl7DateTime.Value.Second);
Assert.AreEqual(hl7DateTime.Value.Kind, DateTimeKind.Utc);
Это утверждение не выполняется в агенте сборки:

Код: Выделить всё

Assert.AreEqual(14, hl7DateTime.Value.Hour);
Ошибка: Assert.AreEqual не удалось. Ожидается:. Актуально:
как правильно преобразовать строку в дату и время и указать часовой пояс по умолчанию, если он не указан в анализируемой строке?

Подробнее здесь: https://stackoverflow.com/questions/793 ... t-supplied
Ответить

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

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

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

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

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