Я пытаюсь преобразовать время преобразования в часовой пояс пользователя, но у меня нет строки часового пояса Windows, такой как «Стандартное тихоокеанское время». Все, что у меня есть, это смещение строки, например "-07:00". Похоже, мне нужно создать временной интервал. Единственный способ разобрать эту строку вручную? Кажется, должен быть способ конвертировать время с использованием смещения строки, но, возможно, я что-то упускаю.
У меня есть это, но для этого требуется часовой пояс. Я пытаюсь изменить его, чтобы вместо этого использовать смещение, но вы можете видеть временной интервал, созданный для преобразования, и мне нужно получить свое смещение для временного интервала.
static void Main(string[] args)
{
var currentTimeInPacificTime = ConvertUtcTimeToTimeZone(DateTime.UtcNow, "Pacific Standard Time");
//TimeSpan ts = new TimeSpan("-07:00");
Console.ReadKey();
}
static DateTimeOffset ConvertUtcTimeToTimeZone(DateTime dateTime, string toTimeZoneDesc)
{
if (dateTime.Kind != DateTimeKind.Utc) throw new Exception("dateTime needs to have Kind property set to Utc");
TimeSpan toUtcOffset = TimeZoneInfo.FindSystemTimeZoneById(toTimeZoneDesc).GetUtcOffset(dateTime);
var convertedTime = DateTime.SpecifyKind(dateTime.Add(toUtcOffset), DateTimeKind.Unspecified);
return new DateTimeOffset(convertedTime, toUtcOffset);
}