我试图从Datetime中提取时间,然后将其转换为int以向其添加10,然后将其转换为Datetime并存储在数据库中。但我不断收到以下错误:
“字符串未被识别为有效的DateTime。”
以下是代码:
MySqlConnection conn = new MySqlConnection(connection);
String query = "Select timings from topogen.token_gen order by timings desc limit 0,1;";
MySqlCommand cmd = new MySqlCommand(query, conn);
String location = "";
conn.Open();
MySqlDataReader r = cmd.ExecuteReader();
string timings="";
while( r.Read()){
timings = r["timings"].ToString();}
DateTime time = DateTime.Parse(timings); //error appears here
timings = time.ToString("HH:mm:ss");
time = DateTime.Parse(timings);
long t = time.Ticks;
t += 10;
timings = t.ToString("HH:mm:ss");
TextBox1.Text = timings;
time = DateTime.ParseExact(timings, "HH:mm:ss", null);
this.Location = location;
conn.Close();
答案 0 :(得分:1)
您的r["timings"].ToString()
似乎生成了CurrentCulture
没有standard date and time format的字符串表示形式。这就是你DateTime.Parse
抛出FormatException
。
timings
列类型更改为datetime
类型,即使也不会。MySqlDataReader
的{{3}}方法将其值设为DateTime
MySqlDataReader r = cmd.ExecuteReader();
if(r.Read())
{
DateTime timings = r.GetDateTime(0);
}
让我们看看你的其余代码。他们也有一些错误。
long t = time.Ticks;
通过这个,您将获得DateTime
的Ticks,例如, 2,193,385,800,000,000
。
t += 10;
有了这个,你现在可以获得2,193,385,800,000,010
,因为它是long
,这只是一个补充。
timings = t.ToString("HH:mm:ss");
这是一个错误。您尝试获取使用long
CurrentCulture
的{{1}}的字符串表示形式。它甚至不使用GetDateTime()
。这是您的timings
将HH:mm:ss
作为字符串。并且您将尝试将其解析为DateTime.ParseExact(timings, "HH:mm:ss", null)
,其等于DateTime.ParseExact("HH:mm:ss", "HH:mm:ss", null)
。如您所见,此解析操作将失败。
考虑改变你的逻辑。