【发布时间】:2019-04-02 02:05:33
【问题描述】:
在我的 Unity 游戏中,我获取系统日期并将其发送到 Sqlite 数据库。但在 sqlite 数据库中,日期保存为 4 位数字。
这是我用来获取日期的代码。
PlayerPrefs.SetString("date_time", System.DateTime.Now.ToString("yyyy-MM-dd"));
CurrentDate = PlayerPrefs.GetString("date_time");
这就是我将它插入数据库的方式。
//Add new event with o timer at the start of the game
public void AddEvent(){
using (IDbConnection dbConnection = new SqliteConnection(connectionString)){
dbConnection.Open();
using(IDbCommand dbCmd = dbConnection.CreateCommand()){
string sqlQuery = String.Format("INSERT INTO events(date,timer_count) VALUES({0},0)",System.DateTime.Now.ToString("yyyy-MM-dd"));
dbCmd.CommandText = sqlQuery;
dbCmd.ExecuteScalar();
dbConnection.Close();
}
}
PlayerPrefs.SetString("date_time", System.DateTime.Now.ToString("yyyy-MM-dd"));
Debug.Log(PlayerPrefs.GetString("date_time"));
}
当我打印出日期时,这就是统一编辑器中日期的样子:
但这就是它在 Sqlite 数据库上的样子:
日期增加时数字减少。
示例:2018-10-28 => 1982 | 2018-10-29 => 1981
我想以与 Unity 编辑器中显示的相同格式将日期存储在 sqlite 数据库中。 (yyyy-mm-dd)
【问题讨论】:
-
2018 减去 10 减去 28 是多少(确定你没有看到 1980?)为什么不在插入语句中使用占位符来表示日期字符串?
-
试试这个 =>
string sqlQuery = String.Format("INSERT INTO events(date,timer_count) VALUES({0},0)", System.DateTime.Now.Date); -
@Shawn 是的,它的“2018 减 10 减 28”,当它转换为字符串时怎么会发生?当我将其更改为 (2018/10/29) 时,它将 6 存储在数据库中。
-
我将 System.DateTime.Now.ToString("yyyy-MM-dd") 更改为 System.DateTime.Now.ToString().Substring(0,10) 以获取日期。现在它将 0 存储在 sqlite 数据库的日期字段中。
-
@SNoV,你试过我上面注释的代码语句了吗?