这是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;
    }

有人吗?

这是sqlite日期或c#的编码问题吗

这是编码问题吗?

没有。分钟和月份格式说明符的使用方法不对。应该是

  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