我正在尝试在WinRT 8.1中使用日期和时间选择器控件,如下所示:
日期选择器控件
时间选择器控件:
现在在我的表格中声明它们如下所示:
Public Class mydata
<MaxLength(5), PrimaryKey> _
Public Property name() As String
<MaxLength(50)> _
Public Property date1() As DateTime
<MaxLength(50)> _
Public Property date2() As DateTime
End Class
现在我正在尝试使用它们,如下所示:
Dim dateFormatter As New DateTimeFormatter("shortdate")
Dim timeFormatter As New DateTimeFormatter("shorttime")
Dim selectedDate1 As DateTimeOffset = Me.selectedDate1.Date
Dim combinedate1Value As New DateTimeOffset(New Date(selectedDate1.Year, selectedDate1.Month, selectedDate1.Day) + Me.selectedDate1.Time)
Dim selectedDate2 As DateTimeOffset = Me.selectedDate2.Date
Dim combineddate2Value As New DateTimeOffset(New Date(selectedDate2.Year, selectedDate2.Month, selectedDate2.Day) + Me.selectedDate2.Time)
If CustomerName.Text <> "" Then
Dim dbpath = Path.Combine(Windows.Storage.ApplicationData.Current.LocalFolder.Path, "mydata.db")
Using db = New SQLite.SQLiteConnection(dbpath)
' Create the tables if they don't exist
db.Insert(New person() With {.name = CustomerName.Text.ToString(), .date1 = dateFormatter.Format(combinedate1Value) & " " & timeFormatter.Format(combinedate1Value), .date2= dateFormatter.Format(combinedate2Value) & " " & timeFormatter.Format(combinedate2Value)})
db.Commit()
db.Dispose()
db.Close()
Dim line = New MessageDialog("Records Inserted")
Await line.ShowAsync()
End Using
Else
Throw New NullReferenceException("Please enter the required fields")
End If
现在问题是在保存时我得到一个异常,如图所示:
所以任何人都让我知道如何使用正确的数据类型将日期保存到我的表中。
答案 0 :(得分:1)
只有在格式化要显示给用户的字符串时才应使用DateTimeFormatter。由于您尝试格式化后端(数据库)的字符串,因此您应该使用标准格式。此外,SQLite要求日期的特定格式为标准ISO8601字符串(“YYYY-MM-DD HH:MM:SS.SSS”)。您应该使用.Net日期格式:
combinedate1Value.ToString("yyyy-MM-dd HH:mm:ss.fff", CultureInfo.InvariantCulture));