这是我的代码。
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,但我收到的错误是日期格式不正确。我在这里缺少什么?
答案 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
函数。