SQLite Net DateTimeKind не указывается при чтении даты из базы данных
storeDateTimeAsTicks - это поведение по умолчанию в последних реализациях SQLite Net, которое также имеет преимущество в производительности по сравнению с хранением в виде строки.
К сожалению, при сохранении тиков DateTime в базе данных он игнорирует часовой пояс, а при чтении DateTime из базы данных инициализирует объект DateTime с помощью тиков, оставляя DateTimeKind объекта неопределенным.
Учитывая то, как DateTime работает, это означает, что для получения DateTime с DateTimeKind.Local из базы данных вам необходимо преобразовать в UTC перед сохранением в базу данных и преобразовать в местное время после считывания из базы данных.
Есть ли способ заставить SQLite Net самостоятельно справиться с этим? Я хотел бы избежать предварительной обработки и последующей обработки объектов во время сериализации и десериализации.
1 ответ
Решение состоит в том, чтобы использовать DateTimeOffset вместо DateTime. С DateTimeOffset время и часовой пояс сохраняются, и вы можете использовать свойства LocalDateTime и UtcDateTime по мере необходимости.