我需要一个将字符串转换为日期时间的方法。如果字符串为任何其他格式,则datetime的格式必须为dd/MM/yyyy,则该方法将返回null。
这是我到目前为止所拥有的:
private DateTime? StringToDateTime(string value)
{
DateTime? Result = null;
DateTime test = DateTime.Now.Date;
if (DateTime.TryParseExact(value, "dd/MM/yyyy", System.Globalization.CultureInfo.InstalledUICulture, System.Globalization.DateTimeStyles.None, out test))
Result = test;
return Result;
}为了测试它,我用这个
private void button1_Click(object sender, EventArgs e)
{
string value = "01/01/2015";
DateTime? test = StringToDateTime(value);
if (test == null)
MessageBox.Show("invalid date entered");
else
MessageBox.Show(test.ToString());
}现在的问题是,TryParseExact总是失败。我也尝试了"dd/mm/yyyy"作为格式,但结果是一样的。
所以我一定是做错什么了。有人有如何使用DateTime.TryParseExact的例子吗?还是有其他方法可以做到这一点呢?
编辑:这不是一个副本,因为“重复”链接建议使用TryParseExact,而我的问题是从一开始就使用它,并询问为什么它不能工作。
发布于 2015-08-06 13:33:22
将代码更改为:
DateTime? Result = null;
DateTime test = DateTime.Now.Date;
if (DateTime.TryParseExact(value, "dd/MM/yyyy", System.Globalization.CultureInfo.InvariantCulture, System.Globalization.DateTimeStyles.None, out test))
Result = test;更改是使用CultureInfo.InvariantCulture而不是CultureInfo.InstalledUICulture.
发布于 2021-10-13 10:15:12
对我来说,格式是个问题,它接受以下代码:01/2015和1/1/2015 (dd/MM/yyyy和d/M/yyyy):
DateTime? Result = null;
DateTime test = DateTime.Now.Date;
var formats = new[] { "dd/MM/yyyy", "d/M/yyyy" };
if (DateTime.TryParseExact(value, formats , System.Globalization.CultureInfo.InvariantCulture, System.Globalization.DateTimeStyles.None, out test))
Result = test;https://stackoverflow.com/questions/31857026
复制相似问题