Ios 强制sqlite插入/更新对日期时间使用不变区域性
我正在使用Thread.CurrentThread.CurrentCulture在UI上显示区域性敏感数据。它工作得很好,因为我只在一个地方设置了它,它会影响整个应用程序。现在的问题是,当我将数据保存到sqlite数据库时,它在保存数据之前转换了datetime格式,这导致了我在以后从db解析数据时出现问题 具体来说,它是使用的挪威日期时间格式。而不是/ e、 g 2017年2月21日变为2017年2月21日 我可以通过在执行任何更新或插入之前将区域性设置为不变量来解决此问题,然后在更新或插入完成后恢复区域性。这并不理想,因为我必须手动更改每个插入 sqlite是否提供了允许我强制它使用不变区域性的任何设置,或者是否有其他方法来设置区域性以避免此问题Ios 强制sqlite插入/更新对日期时间使用不变区域性,ios,sqlite,xamarin,invariantculture,Ios,Sqlite,Xamarin,Invariantculture,我正在使用Thread.CurrentThread.CurrentCulture在UI上显示区域性敏感数据。它工作得很好,因为我只在一个地方设置了它,它会影响整个应用程序。现在的问题是,当我将数据保存到sqlite数据库时,它在保存数据之前转换了datetime格式,这导致了我在以后从db解析数据时出现问题 具体来说,它是使用的挪威日期时间格式。而不是/ e、 g 2017年2月21日变为2017年2月21日 我可以通过在执行任何更新或插入之前将区域性设置为不变量来解决此问题,然后在更新或插入完
编辑。这是针对Xamarin.iOS的,我试图避免任何重大的代码更改,因为该项目是在另一个平台上共享的(windows wpf,它没有问题)我不知道Xamarin,但作为一项规则,我们希望使用
en_US_POSIX
(和GMT/UTC/Zulu时区)。而且,不,没有一个SQLite设置可以为您做到这一点。你必须自己做。另外,我鼓励你使用SQLite首选的“时间字符串”之一。如果以MM/dd/yyyy
格式存储日期,则不能使用where
子句,也不能排序。在缺少SQLite原生日期类型的情况下,如果选择将其存储为字符串,则确实需要yyyy-MM-dd
格式,以年为先。或者使用数字格式,例如,unixepoch
/。我也不知道Xamarin的情况,但要补充Rob的评论,如果数据库中已经有格式为MM.DD.YYYY的日期,则可以使用:UPDATE X SET DATE=SUBSTR(DATE,7)| | | | | | SUBSTR(DATE,4,2)| | | | | | | | | | | | | | | |;如果您的应用程序正在接收格式为MM.DD.YYYY的数据,并且希望将其插入到数据库中,则使用insert into X(日期)VALUES=SUBSTR(日期,7)| |'-'| | SUBSTR(日期,4,2)| |'-'| | SUBSTR(日期,1,2);