如何将 Xamarin TimePicker 值保存到数据库?
Posted
技术标签:
【中文标题】如何将 Xamarin TimePicker 值保存到数据库?【英文标题】:How do I save Xamarin TimePicker value to database? 【发布时间】:2021-07-11 19:52:20 【问题描述】:我正在使用 SQLite 存储来自 Xamarin.Forms 应用程序的数据。我希望用户能够将 DatePicker 用于日期,将 TimePicker 用于时间,然后将其存储。当我使用以下内容时:
<DatePicker Date="Binding Date"
x:Name="DatePicker"
Format="D" />
它将所选日期正确存储在数据库中,但是当我使用时:
<TimePicker Time="Binding Time"
x:Name="TimePicker"
Format="T"/>
它每次都将时间存储为 12:00 AM。我错过了什么?
日期和时间都是数据库中的日期时间值。
using System;
using SQLite;
namespace Items.Models
public class Item
[PrimaryKey, AutoIncrement]
public int ID get; set;
public string Name get; set;
public string Description get; set;
public string Location get; set;
public DateTime Date get; set; = DateTime.Now;
public DateTime Time get; set;
和
using System.Collections.Generic;
using System.Threading.Tasks;
using SQLite;
using Items.Models;
namespace Item.Data
public class ItemDatabase
readonly SQLiteAsyncConnection database;
public ItemDatabase(string dbPath)
database = new SQLiteAsyncConnection(dbPath);
database.CreateTableAsync<Item>().Wait();
public Task<List<Item>> GetItemsAsync()
//Get all items.
return database.Table<Item>().ToListAsync();
public Task<Item> GetItemAsync(int id)
// Get a specific item.
return database.Table<Item>()
.Where(i => i.ID == id)
.FirstOrDefaultAsync();
public Task<int> SaveItemAsync(Item item)
if (item.ID != 0)
// Update an existing item.
return database.UpdateAsync(item);
else
// Save a new item.
return database.InsertAsync(item);
public Task<int> DeleteItemAsync(Item item)
// Delete an Item.
return database.DeleteAsync(item);
【问题讨论】:
您没有显示任何用于存储或检索时间的实际代码 @Jason 现在我有了。谢谢! 【参考方案1】:TimePicker.Time
的类型弄错了,应该是TimeSpan
而不是DateTime
,所以绑定创建错误,这就是TimePicker上选择时间时值没有变化的原因。
如下修改你的代码
public class Item
public DateTime Date get; set; = DateTime.Now;
public TimeSpan Time get; set;
【讨论】:
谢谢@ColeX-MSFT!做到了!当我在 SQLite 文档中查找数据类型时,没有 TimeSpan 的数据类型,但看起来 C# TimeSpan 存储正确:-)以上是关于如何将 Xamarin TimePicker 值保存到数据库?的主要内容,如果未能解决你的问题,请参考以下文章
Xamarin.Forms Timepicker IsVisible 属性与自定义渲染器
Xamarin.Forms Android DatePicker / TimePicker按钮侦听器
xamarin 表单中的 datepicker 和 timepicker 多次触发 Focus 和 Unfocus 事件
是否可以将 TimePicker 的“Focused”视图嵌入到另一个视图中?
如何在 xamarin 表单中更改视觉材料 DatePickerDialog 和 TimePickerDialog 背景颜色