Функция mysql преобразования часового пояса в С#

Как преобразовать convert_tz() в mysql в функцию С#


person Andy    schedule 01.07.2021    source источник
comment
MySQL использует эту вещь, называемую tz или база данных zoneinfo. Я выбрал повторяющийся вопрос, потому что он показывает способы реализации той же базы данных на C#/dotnet.   -  person O. Jones    schedule 02.07.2021


Ответы (2)


изменить:

Используйте TimeZoneInfo и выберите зону по ее идентификатору (вот почему и как их проверить)

ВАЖНО. Эти данные не являются статическими. Новые часовые пояса вводятся в Windows по мере внесения изменений правительствами мира. В конечном счете, именно поэтому в документах нет авторитетных страниц, на которых они перечислены. Не полагайтесь на какой-либо жестко запрограммированный список, а вызовите TimeZoneInfo.FindTimeZoneById() самостоятельно или используйте TZUTIL.EXE /L для их перечисления. Приведенные ниже ответы являются всего лишь моментальным снимком данных на момент их публикации. НЕ КОПИРУЙТЕ ОТСЮДА, ЧТОБЫ ЗАПИСАТЬСЯ В ВАШЕ ПРИЛОЖЕНИЕ!

Пример кода:

var exampleTime = DateTime.SpecifyKind(DateTime.Now,DateTimeKind.Unspecified);

DateTime result = TimeZoneInfo.ConvertTime(exampleTime,
TimeZoneInfo.FindSystemTimeZoneById("Europe/London"),
TimeZoneInfo.FindSystemTimeZoneById("America/Denver")); 

До рассматриваемых изменений:

Нет такой перегрузки для этого метода с такими параметрами.

Перегрузки TimeZoneInfo.ConvertTime — экран документации

Источник: Документация Microsoft

person Malgosiek    schedule 01.07.2021
comment
Я знаю, но я пытаюсь найти что-то, что может делать то, что я искал. Я относительно новичок в библиотеках С#, и существует так много разных функций часового пояса, что я немного потерялся. - person Andy; 02.07.2021
comment
@Энди, я отредактировал свой пост, посмотри. Я надеюсь, что это поможет, gl! - person Malgosiek; 02.07.2021

Вероятно, есть более чистые методы, но я сохраняю вспомогательную функцию, которая использует TimeZoneInfo (выполните поиск в документации MS, чтобы найти нужный вам идентификатор) в пользовательском классе TimeUtils.

public static DateTime ConvertToMST(DateTime dt)
{
    DateTime utc = dt.ToUniversalTime();
    return TimeZoneInfo.ConvertTimeFromUtc(utc, TimeZoneInfo.FindSystemTimeZoneById("Mountain Standard Time"));
}
person jtucker13    schedule 01.07.2021