这是sqlite日期或c#的编码问题吗
本文关键字:编码 问题 sqlite 日期 这是 | 更新日期: 2023-09-27 18:27:07
我有一个作业,它运行并记录流程开始和结束的日期。但是,当应用程序加载时,它需要获取上一次运行的数据。但每次它都抛出一个异常:String未被识别为有效的DateTime。
当然,当我查看存储的数据时,我会发现例如"2013-41-10 10:08"
先前设置的
string jobsDate = DateTime.Now.ToString("yyyy-mm-dd HH:MM");
我使用的语句是:
bool IsInserted = db.Update("UPDATE jobs SET JobLastRun ='" + jobsDate + "', jobStatus = '" + status + "' WHERE rowid = " + rowid );
db.更新在很大程度上是多余的,但在这里是为后代
public bool Update(String updateQuery)
{
Boolean returnCode = true;
try
{
//dbl.AppendLine(sql);
dbl.AppendLine(updateQuery);
this.ExecuteNonQuery(updateQuery);
}
catch(Exception crap)
{
OutCrap(crap);
returnCode = false;
}
return returnCode;
}
public int ExecuteNonQuery(string sql)
{
SQLiteConnection cnn = new SQLiteConnection(dbConnection);
cnn.Open();
SQLiteCommand mycommand = new SQLiteCommand(cnn);
mycommand.CommandText = sql;
int rowsUpdated = mycommand.ExecuteNonQuery();
cnn.Close();
return rowsUpdated;
}
有人吗?
这是编码问题吗?
没有。分钟和月份格式说明符的使用方法不对。应该是
string jobsDate = DateTime.Now.ToString("yyyy-MM-dd HH:mm");
^^ ^^
MM = Months
mm = minutes
HH = hours in 24 hour clock
hh = hours in 12 hour clock
一个很好的参考是:C#中的字符串格式
2013-41-10 10:08
不是正确的日期时间。
它之所以以这种方式存储,是因为这里的格式化字符串:
string jobsDate = DateTime.Now.ToString("yyyy-mm-dd HH:MM");
在格式中,字符串"MM"表示月份,mm
表示分钟,因此正确的字符串应该是:
string jobsDate = DateTime.Now.ToString("yyyy-MM-dd HH:mm");
这是编码问题吗?
绝对不是。这是导致您出现问题的格式。
如果你查看你的代码,你会发现
2013-41-10 10:08
41绝对不可能是几个月。你得到这个是因为小mm
,意思是分钟。对于月份,您需要将其更改为MM;对于分钟,您需要在HH
之后将其更改成mm
。你需要像这个一样改变它
string jobsDate = DateTime.Now.ToString("yyyy-MM-dd HH:mm"); //note the capital MM for months and small mm for mintues