无法将DateTime格式从MM / dd / yyyy转换为yyyy-MM-dd

时间:2012-03-20 18:43:45

标签: c# datetime

我知道这是一个反复出现的问题,但即使经过大量研究,我似乎也无法使其工作!我想将字符串转换为DateTime。

public DateTime ConvertToDateTime(string thisDate)
{
    return DateTime.ParseExact(thisDate, "yyyy-MM-dd", CultureInfo.InvariantCulture);
}

(修改)

我将"2012-03-07"作为参数,我得到的DateTime03/07/2012 12:00AM。当我希望它返回时:2012-03-07 00:00:00

2 个答案:

答案 0 :(得分:8)

你的代码是正确的;你的期望是错的。

当方法返回DateTime时,它没有格式。更确切地说,它具有二进制内存格式,与其字符串格式无关。

调试器格式化DateTime以向您显示,但这与DateTime值本身无关。它使用的格式可能取决于您的区域设置。

如果要向用户显示DateTime,或将其作为字符串传递给其他某个函数,可以使用其中一个ToString重载格式化它。

您可能正在显示或传递您给出的函数的返回值;如果是这样,错误在显示或传递DateTime的代码中,而不是在您给出的函数中。如果是这种情况,请编辑您的答案以包含该代码,也许我们可以帮助您解决问题。

答案 1 :(得分:2)

试试这个

public String ConvertToDateTime(string thisDate)
{
    return DateTime.ParseExact(thisDate, "yyyy-MM-dd",
           CultureInfo.InvariantCulture).toString("yyyy-MM-dd");
}