Я получаю время, записанное на континенте 13:00, поскольку часовой пояс utc + 2, и я нахожусь в Великобритании, и мой результат ожидается в utc. Я конвертирую время в 12:00, и получатель говорит, что он должен быть 11:00! Какое правильное время для отправки? Я использую этот код для преобразования Datetime:
Dim currentUTC As DateTime = localZone.ToUniversalTime(03/10/2018 13:00)
Dim truedate As DateTime = currentUTC
Это не C#, это VB
Что такое localZone и как его настроить?
Как именно вы получаете записанное время? Это текстовый файл, база данных или что-то еще?
Обратите внимание, что в VB # 03/10/2018 13: 00 # - это литерал даты 10 марта, а не 3 октября. В Центральной Европе 10 марта 2018 года приходится на UTC + 1 («Зимнее время»), тогда как 3 октября 2018 года приходится на UTC + 2 («Летнее время»).





11:00 правильно. то есть:
void Main()
{
DateTime t;
DateTime.TryParse("2018/10/03T13:00:00+02:00", out t);
Console.WriteLine(t.ToUniversalTime());
}
Обновлено: вы удалили тег C#, затем:
Sub Main
Dim t As DateTime
DateTime.TryParse("2018/10/03T13:00:00+02:00", t)
Console.WriteLine(t.ToUniversalTime())
End Sub
Спасибо за ответы. Я специально включил тег C# в надежде, что какой-нибудь гуру C# сможет дать ответ! Я не получаю время в формате «2018/10 / 03T13: 00: 00 + 02: 00», а в формате «2018/10 / 03T13: 00: 00»! Как мне с этим справиться?
Я получаю время от веб-службы?
@joebohen, этот формат не указан. Вы можете конвертировать в локальный или универсальный, вам нужно знать, какой из них.
Время ожидается в UTC.
@joebohen Откуда вы знаете, что часовой пояс utc + 2? Всегда ли так будет? Вы можете добавить к строке "+2: 00" перед ее синтаксическим анализом.
@joebohen, если известно, что время является UTC, вы можете преобразовать его в LocalTime (если зона +2 ToLocalTime вернет 15:00, а не 10:00 или 11:00 - IOW +2 на 2 часа опережает ваше местоположение , СОЕДИНЕННОЕ КОРОЛЕВСТВО)
Это сбивает с толку. Можешь немного почистить?