1

我有一份工作,在流程的开始和结束时运行并记录日期。但是,当应用程序加载时,它需要获取前一次运行的数据。但是每次它都会抛出一个异常说:字符串未被识别为有效的日期时间。

当我查看存储的数据时,我当然会发现例如“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;
    }

任何人?

4

3 回答 3

1

这是编码问题吗?

不,您的分钟和月份格式说明符是错误的。它应该是

  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-08-11T10:15:21.583 回答
0

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-08-11T10:16:14.227 回答
0

这是编码问题吗?

绝对不是。这是导致您出现问题的格式。

如果您查看您的代码,您会发现

2013-41-10 10:08

41 绝对不能是几个月。你得到这个是因为小mm,这意味着分钟。几个月你需要将其更改为MM并且分钟你需要将其更改为mmafter HH。你需要像这样改变它

string jobsDate = DateTime.Now.ToString("yyyy-MM-dd HH:mm");  //note the capital MM for months and small mm for mintues
于 2013-08-11T10:17:08.773 回答