1

В моей Windows 10 универсальное приложение я использовать CalendarDatePicker для выбора даты:Как хранить дату только значения из CalendarDatePicker в базу данных SQLite в Windows 10 универсальное приложение

<CalendarDatePicker x:Name="cdpStartDate" Width="150" /> 

в код я использую следующий код хранить дату в базе данных SQLite:

booking = new Bookings(); 
using (
    SQLite.Net.SQLiteConnection conn = 
     new SQLite.Net.SQLiteConnection(new SQLite.Net.Platform.WinRT.SQLitePlatformWinRT(), Common.Utils.DbPath())) 
     { 
     booking.StartDate = cdpStartDate.Date.ToDateTime(); 
     conn.Update(booking); 
     } 

Мой класс таблица выглядит следующим образом:

[Table("Bookings")] 
public class Bookings 
{ 
    [PrimaryKey] 
    public int BookingId { get; set; } 

    [NotNull] 
    public DateTime StartDate { get; set; } 
} 

Отправляя стоимость бронирования. StartDate - 18.11.2015 00:00:00. Но после сохранения значения в базе данных SQLite значение конвертируется в 17.11.2015 23:00:00. Кажется, это время Utc. Мне не нужна информация о времени в моем приложении, только дата.

Как я могу сохранить дату без конвертации в мою базу?

Спасибо, Uwe

ответ

0

Timestamps, как правило, только 0:00 время в определенный день. Как SQLite не заботиться о часовых поясах для вас, если вы хотите, чтобы получить чистую дату, вы должны поставить чистую (без часового пояса) DateTime в

Try:.

booking.StartDate = cdpStartDate.Date.ToDateTime().ToUniversalTime().Date; 

Это на самом деле класс DateTime, то есть , дружественный, чтобы добавить к нему информацию о локальном часовом поясе.

1
GeographicRegion userRegion = new GeographicRegion(); 
string regionCode = userRegion.Code; 

Windows.Globalization.DateTimeFormatting.DateTimeFormatter dtf = new DateTimeFormatter("shortdate", new[] { regionCode }, regionCode, CalendarIdentifiers.Gregorian, ClockIdentifiers.TwentyFourHour); 

DateTimeOffset result = cdpStartDate.Date ?? DateTimeOffset.MinValue; 

string shortDate = dtf.Format(result); 

Я использовал вышеприведенное для создания пользовательского форматирования коротких дат, основанного на локальных региональных настройках локальных окон, и затем сохранил это для строки. Я знаю, что вы хотели сохранить дату, но, как сказал Кай, SQL не хранит Даты без временной части, поэтому это даст только дату в коротком формате.

 Смежные вопросы

  • Нет связанных вопросов^_^