Я смущен «GMT Стандартное время».«GMT Стандартное время» подразумевает BST?
У меня есть данные, которые хранятся только как DATE, но на самом деле 6PM BST.
Я прочитал его и добавлю 18 часов. Затем я пытаюсь конвертировать в UTC. Мое первоначальное понимание заключается в том, что конверсия не учитывала бы дневное время (так как «GMT Standard Time» и UTC оба без дневного времени). Я думал, что мне придется проверять на светлое время на источнике, а затем внести корректировку.
Однако ConvertTime, похоже, знает о дневном времени в источнике и вносит соответствующие изменения.
Это кажется странным для меня - это ожидаемое поведение?
TimeZoneInfo gmtZone = TimeZoneInfo.FindSystemTimeZoneById("GMT Standard Time");
TimeZoneInfo utcZone = TimeZoneInfo.FindSystemTimeZoneById("UTC");
public static CultureInfo ci = CultureInfo.InvariantCulture;
string SomeDT = "27/01/2000"; //First BST day
var sourceDT = DateTime.ParseExact(SomeDT, "dd/MM/yyyy", ci).AddHours(18);
var utcDT = TimeZoneInfo.ConvertTime(sourceDT, gmtZone, utcZone);
// At this point utcDT has already been changed so test below is redundant.
// That Suggest "GMT Standard Time" is actually "Daylight Time" i.e.BST
if (gmtZone.IsDaylightSavingTime(sourceDT))
{
utcDT = utcDT.AddHours(-1);
}
else
{
Console.WriteLine("Not BST");
}
Британцы поп их пива по Гринвичу в зимнее время, BST летом. Windows не сохраняет отдельные имена для часовых поясов, которые отличаются только при соблюдении дневного освещения. Поэтому «GMT Standard Time» действительно соответствует BST, когда вы выбираете солнечный день. Также причина, по которой «UTC» имеет свое имя. –