SQLite Net DateTimeKind не указывается при чтении даты из базы данных

storeDateTimeAsTicks - это поведение по умолчанию в последних реализациях SQLite Net, которое также имеет преимущество в производительности по сравнению с хранением в виде строки.

К сожалению, при сохранении тиков DateTime в базе данных он игнорирует часовой пояс, а при чтении DateTime из базы данных инициализирует объект DateTime с помощью тиков, оставляя DateTimeKind объекта неопределенным.

Учитывая то, как DateTime работает, это означает, что для получения DateTime с DateTimeKind.Local из базы данных вам необходимо преобразовать в UTC перед сохранением в базу данных и преобразовать в местное время после считывания из базы данных.

Есть ли способ заставить SQLite Net самостоятельно справиться с этим? Я хотел бы избежать предварительной обработки и последующей обработки объектов во время сериализации и десериализации.

1 ответ

Решение состоит в том, чтобы использовать DateTimeOffset вместо DateTime. С DateTimeOffset время и часовой пояс сохраняются, и вы можете использовать свойства LocalDateTime и UtcDateTime по мере необходимости.

Другие вопросы по тегам