Ответ 1
В то время как свойство DateTime.Kind не имеет setter, статический метод DateTime.SpecifyKind создает экземпляр DateTime с указанным значением для Kind.
Я хочу хранить строгое время UTC в переменной DateTime и выводить его в формате ISO 8601.
Чтобы сделать последнее, что я использовал .ToString( "yyyy-MM-ddTHH: mm: sszzz" ), и он обнаружил, что часовой пояс UTC + 01: 00.
Я попытался использовать .Kind = DateTimeKind.Utc, но он говорит, что свойство Kind не имеет сеттера.
Как явным образом укажу время в UTC? Как определяется свойство Kind?
В то время как свойство DateTime.Kind не имеет setter, статический метод DateTime.SpecifyKind создает экземпляр DateTime с указанным значением для Kind.
Если вы хотите воспользоваться часовым поясом локального компьютера, вы можете использовать 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);
Вы также можете попробовать это, его легко реализовать
TimeZone time2 = TimeZone.CurrentTimeZone;
DateTime test = time2.ToUniversalTime(DateTime.Now);
var singapore = TimeZoneInfo.FindSystemTimeZoneById("Singapore Standard Time");
var singaporetime = TimeZoneInfo.ConvertTimeFromUtc(test, singapore);
Пожалуйста, напишите текст, на которое вы хотите изменить стандартное время. Используйте функцию TimeZone для С#.