[英]Is this an encoding issue with sqlite date or c#?
我有一份可以在流程开始和结束时运行并记录日期的作业。 但是,在应用程序加载时,它需要获取上一次运行的数据。 但是每次都会抛出一个异常说:字符串未被识别为有效的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.Update在很大程度上是多余的,但在此不作赘述
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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.