在我的Windows 10通用应用程序中,我使用CalendarDatePicker选择日期:
if (root.path("coordinates").path("coordinates").isArray()) {
lat = root.path("coordinates").path("coordinates").get(1).asText();
lon = root.path("coordinates").path("coordinates").get(0).asText();
}
在Code back中,我使用以下代码将日期存储到SQLite数据库中:
<CalendarDatePicker x:Name="cdpStartDate" Width="150" />
我的表类看起来像这样:
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);
}
调试预订值时.StartDate是18.11.2015 00:00:00。但是将值保存到SQLite数据库后,该值将转换为17.11.2015 23:00:00。这似乎是Utc时间。 我的应用程序中不需要任何时间信息,只需要日期。
如何在不转换为数据库的情况下保存日期?
谢谢, 乌韦
答案 0 :(得分:1)
时间戳通常只是某一天的0:00时间。由于SQLite没有为您处理时区,如果您想要获得纯粹的约会,您必须在其中放置一个纯粹的(没有时区)日期时间。
尝试:
SELECT customer_id, LISTAGG(start_term || '-' || end_term || ',' || rate, '; ')
WITHIN GROUP (ORDER BY rate) AS rate
FROM table_name
GROUP BY customer_id;
它实际上是DateTime类,它是如此友好以向其添加本地时区信息。
答案 1 :(得分: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);
我使用上面的方法根据本地Windows区域设置创建自定义短日期格式化程序,然后将其存储到字符串中。我知道你想存储一个日期,但正如Kai所说,SQL没有时间部分存储日期,因此这将只提供短格式的日期。