C#日期格式转换错误

时间:2014-06-24 02:07:45

标签: c# .net datetime

这是我的代码。

        dateString = "6/29/2014";
        format = "yy-mm-dd";
        try
        {
            result = DateTime.ParseExact(dateString, format, provider);
            Console.WriteLine("{0} converts to {1}.", dateString, result.ToString());
        }
        catch (FormatException)
        {
            Console.WriteLine("{0} is not in the correct format.", dateString);
        }

我想将2014年6月29日的日期转换为2014-06-29,但我收到的错误是日期格式不正确。我在这里缺少什么?

3 个答案:

答案 0 :(得分:4)

您的格式字符串与输入不匹配,并且您没有指定输出格式。

var dateString = "6/29/2014";
var format = "M/dd/yyyy";  // adjusted format to match input

try
{
    var result = DateTime.ParseExact(dateString, format, provider);

    Console.WriteLine("{0} converts to {1}.",
        dateString, result.ToString("yyyy-MM-dd"));  // specify output format
}
catch (FormatException)
{
    Console.WriteLine("{0} is not in the correct format.", dateString);
}

输出:

  

2014年6月29日转换为2014-06-29。

答案 1 :(得分:1)

您需要首先解析日期,然后将其串起来。

var asDate = DateTime.Parse(dateString);
var result = asDate.ToString("yy-MM-dd");

另请注意,.NET中的"mm"会为您提供分钟。您需要使用"MM"一个月。

答案 2 :(得分:1)

夫妻俩。

您希望传入您来自的格式,使其成为日期对象。你正在寻找的“转换”出现在另一端。此外,您没有传递MM/dd/yy,该日期字符串实际上是M/dd/yyyy,因为它不包括当月的前导零,而且它是一个4位数的年份。

这是一个有效的例子。

string dateString = "6/29/2014";
string format = "M/dd/yyyy";
try
{
    DateTime result = DateTime.ParseExact(dateString, format, CultureInfo.InvariantCulture);
    Console.WriteLine("{0} converts to {1}.", dateString, result.ToString("yyyy-MM-dd"));
}
catch (FormatException)
{
    Console.WriteLine("{0} is not in the correct format.", dateString);
}

请注意,我将新格式传递给ToString函数。