在Xamarin Forms中将日期时间保存到数据库
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在Xamarin Forms中将日期时间保存到数据库相关的知识,希望对你有一定的参考价值。
我想更新lastsync列,问题是数据无法正常保存。我使用了Convert.ToDateTime和DateTime.Parse,但数据仍然无法正常保存。我正在“01/01/0001 12:00:00”。我究竟做错了什么?
public DateTime LastUpdated { get; set; }
var current_datetime = DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss");
string ofretailer_group_sql = "UPDATE tblRetailerGroup SET LastUpdated = '" + DateTime.Parse(current_datetime) + "' WHERE RetailerCode = '" + retailerCode + "'";
await conn.ExecuteAsync(ofretailer_group_sql);
如果从TimeDate字段获取01/01/0001 12:00:00
,则表示从未设置/更新。
我个人使用查询(?
)参数来允许SQL语句字符串成为一堆永远不会更改的常量,然后您只需按照它们属于SQL语句的顺序为该查询分配参数:
Example:
const string ofretailer_group_sql = "UPDATE tblRetailerGroup SET LastUpdated = ? WHERE RetailerCode = ?";
await conn.ExecuteAsync(ofretailer_group_sql, new object[] { DateTime.UtcNow, retailerCode });
注意:我使用UtcNow
删除DST和手机设备时区更改问题...
您应该为文件管理创建依赖服务,以便在ios和android级别保存和获取数据。以下是如何在文件中保存和获取日期时间的代码。
PCL项目: - 创建界面
public interface IFileHelper
{
void SaveLastUpdatedDateTimeForData(DateTime dateTime);
DateTime GetLastUpdatedDateTimeForData();
}
IOS / Android项目: - 创建一个类以将数据保存到文件中。
[assembly: Dependency(typeof(FileHelper))]
namespace ABCD.iOS
{
public class FileHelper: IFileHelper
{
public void SaveLastUpdatedDateTimeForData(DateTime dateTime)
{
try {
string docFolder = Environment.GetFolderPath(Environment.SpecialFolder.Personal);
string filePath = Path.Combine(docFolder, "..", "Library", "updatetime.txt");
File.WriteAllText(filePath, dateTime.Ticks.ToString());
} catch (Exception ex) {
Debug.WriteLine(ex.Message);
}
}
public DateTime GetLastUpdatedDateTimeForData()
{
//bool status = false;
string docFolder = Environment.GetFolderPath(Environment.SpecialFolder.Personal);
string filePath = Path.Combine(docFolder, "..", "Library", "updatetime.txt");
if (!File.Exists(filePath)) {
return new DateTime(2000, 1, 1);
}
try {
string content = File.ReadAllText(filePath);
DateTime dt = new DateTime(long.Parse(content));
return dt;
} catch (Exception ex) {
Debug.WriteLine("exception in GetLastUpdatedDateTimeForData : {0}", ex.Message);
return DateTime.MinValue;
}
}
}
}
在Client / PCL项目中调用依赖服务:
保存更新日期时间:
DependencyService.Get<IFileHelper>().SaveLastUpdatedDateTimeForData(DateTime.Now);
获取更新日期时间:
var lastUpdatedDateTime = DependencyService.Get<IFileHelper>().GetLastUpdatedDateTimeForData();
它似乎是Date-String-Date的转换问题。
我会直接在Db中保存第一个DateTime.now并检查值是否正确保存。如果这有效,那么肯定是转换问题。然后你可以尝试以下解决方案。
我做这样的转换:
DateTime date = DateTime.ParseExact(current_datetime,“yyyy-MM-dd hh:mm:ss”,System.Globalization.CultureInfo.InvariantCulture);
以上是关于在Xamarin Forms中将日期时间保存到数据库的主要内容,如果未能解决你的问题,请参考以下文章
如何将 Xamarin TimePicker 值保存到数据库?
在 Xamarin.Forms 中将 HeightRequest 设置回 Auto
在 Xamarin.Forms 上的 XAML 中将 BindingContext 设置为 ViewModel
在 Xamarin.Forms 中将默认的深色 Android 主题更改为白色?
使用 PlatformConfiguration (Xamarin.Forms 2.3.3) 在 UWP 中将工具栏移动到底部