Подтвердить что ты не робот

Как установить часовой пояс (или вид) значения DateTime?

Я хочу хранить строгое время UTC в переменной DateTime и выводить его в формате ISO 8601.

Чтобы сделать последнее, что я использовал .ToString( "yyyy-MM-ddTHH: mm: sszzz" ), и он обнаружил, что часовой пояс UTC + 01: 00.

Я попытался использовать .Kind = DateTimeKind.Utc, но он говорит, что свойство Kind не имеет сеттера.

Как явным образом укажу время в UTC? Как определяется свойство Kind?

4b9b3361

Ответ 1

В то время как свойство DateTime.Kind не имеет setter, статический метод DateTime.SpecifyKind создает экземпляр DateTime с указанным значением для Kind.

Отказоустойчиво существует несколько

Ответ 2

Если вы хотите воспользоваться часовым поясом локального компьютера, вы можете использовать myDateTime.ToUniversalTime(), чтобы получить время UTC с вашего локального времени или myDateTime.ToLocalTime(), чтобы преобразовать время UTC в локальное машинное время.

// convert UTC time from the database to the machine time
DateTime databaseUtcTime = new DateTime(2011,6,5,10,15,00);
var localTime = databaseUtcTime.ToLocalTime();

// convert local time to UTC for database save
var databaseUtcTime = localTime.ToUniversalTime();

Если вам нужно преобразовать время из/в другие часовые пояса, вы можете использовать TimeZoneInfo.ConvertTime() или TimeZoneInfo.ConvertTimeFromUtc().

// convert UTC time from the database to japanese time
DateTime databaseUtcTime = new DateTime(2011,6,5,10,15,00);
var japaneseTimeZone = TimeZoneInfo.FindSystemTimeZoneById("Tokyo Standard Time");
var japaneseTime = TimeZoneInfo.ConvertTimeFromUtc(databaseUtcTime, japaneseTimeZone);

// convert japanese time to UTC for database save
var databaseUtcTime = TimeZoneInfo.ConvertTimeToUtc(japaneseTime, japaneseTimeZone);

Список доступных часовых поясов

Класс TimeZoneInfo в MSDN

Ответ 3

Вы также можете попробовать это, его легко реализовать

        TimeZone time2 = TimeZone.CurrentTimeZone;
        DateTime test = time2.ToUniversalTime(DateTime.Now);
        var singapore = TimeZoneInfo.FindSystemTimeZoneById("Singapore Standard Time");
        var singaporetime = TimeZoneInfo.ConvertTimeFromUtc(test, singapore);

Пожалуйста, напишите текст, на которое вы хотите изменить стандартное время. Используйте функцию TimeZone для С#.