[英]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.