字符串未被识别为有效的DateTime phpMyAdmin
本文关键字:DateTime phpMyAdmin 有效 识别 字符串 | 更新日期: 2023-09-27 18:26:53
使用phpMyAdmin,希望从C#更新数据。
我在phpMyAdmin中为列dateBuy
使用了"yyyy-MM-dd"
格式。
为了显示它,我在C#中将格式更改为"dd/MM/yyyy"
。
这是代码:(我对这个代码没有问题)
string dateBuy = dr.GetValue(1).ToString();
DateTime time = DateTime.Parse(dateBuy);
dateBuy = time.ToString("dd/MM/yyyy");
为了更新数据库,我想将格式改回"yyyy-MM-dd"
。但是,我有一个错误:"String was not recognized as a valid DateTime"
。
这是我代码的错误部分:
string dateBuy2 = txtDateBuy.Text;
dateBuy = (DateTime.ParseExact(dateBuy2, "yyyy-MM-dd", null)).ToString();
我在DateTime语法中犯了错误吗?谢谢你的帮助。
[由于如果我们继续评论(评论会很长)是不好的,我只在这里提出我认为的解决方案]
要将dateBuy
格式化为您想要的格式,您还应该将字符串格式放在ToString()
中
也就是说,代替
dateBuy = (DateTime.ParseExact(dateBuy2, "yyyy-MM-dd", null)).ToString();
放入
dateBuy = (DateTime.ParseExact(dateBuy2, "yyyy-MM-dd", null)).ToString("yyyy-MM-dd");
否则,ToString()
可能会生成类似"2015-10-16 12:00:00 AM"的内容,而不是"2015-10-116"
但是,由于您使用ParseExact
,dateBuy2
的输入也必须采用"yyyy-MM-dd"格式,这与目的不符。您可以考虑使用DateTimePicker
来控制输入格式。
或者,您可以使用DateTime.Parse
或TryParse
(如Martheen所建议的),比如这个
try {
DateTime dt = DateTime.Parse(txtDateBuy.Text);
dateBuy = dt.ToString("yyyy-MM-dd");
} catch (Exception exc) {
//wrong format, do something to tell the user
}
如果输入必须在TextBox
中,则最好放置try-catch
,以防止在使用Parse
时由于输入格式错误而导致程序崩溃。
如果你使用TryParse
,你可以把它放在if-else
块语句中,而不是
DateTime dt;
if (DateTime.TryParse(txtDateBuy.Text, CultureInfo.InvariantCulture, DateTimeStyles.AssumeLocal, out dt)) {
//correct format, do something using dt
} else {
//incorrect format, warns the user
}
要获得CultureInfo
enum
,您需要添加对System.Globalization
的引用
[根据Soner Gonul先生的建议编辑]