C# 格式化日期时间变量

C# 格式化日期时间变量,c#,datetime,C#,Datetime,我正在尝试将字符串形式的日期转换并存储到datetime变量中 String fromdate= "02-JUN-2014"; DateTime dFromDate = Convert.ToDateTime(fromdate); 此dfromDate用于另一个函数,该函数预期日期为2014年6月2日格式。但由于dfromDate将日期存储为2014年2月6日,因此存在格式异常。您可以使用ParseExact 用引号括起fromDate: var fromdate = "02-JUN-2014"

我正在尝试将字符串形式的日期转换并存储到datetime变量中

String fromdate= "02-JUN-2014";
DateTime dFromDate = Convert.ToDateTime(fromdate);
此dfromDate用于另一个函数,该函数预期日期为2014年6月2日格式。但由于dfromDate将日期存储为2014年2月6日,因此存在格式异常。

您可以使用ParseExact


用引号括起fromDate:

var fromdate = "02-JUN-2014";
var dFromDate = Convert.ToDateTime(fromdate);

我不确定整个上下文,但您可以始终使用以下命令创建新日期:

DateTime thisDate1 = new DateTime(2011, 6, 10);
Console.WriteLine("Today is " + thisDate1.ToString("MMMM dd, yyyy") + ".");

// The example displays the following output:
//    Today is June 10, 2011.

您的第一个问题可能是,您需要分配如下字符串:

String fromdate = "02-JUN-2014";
使用ParseExact方法。

您想使用DateTime.ParseExact,即

如果您不是美国CultureInfo,您可能需要为您的语言指定一个区域性。InvariantCulture是美国的一种特殊形式。

Convert.ToDateTime使用标准的日期和时间格式,看起来dd MMM yyyy不是其中之一

您可以使用基于英语的文化,如

使用DateTime.ParseExact可能会起作用,如果您确切知道格式字符串,这是最好的选择,但您也可以为调用设置当前的CultureInfo:

String fromdate= "02-JUN-2014";
DateTime dFromDate = Convert.ToDateTime(fromdate, CultureInfo.CurrentCulture);
或:


但这不会编译@rinukkusu希望它现在会:@Habib ya correct..editedaccordingly@Habib我不认为-会影响当前文化的效果。据我所知,只有少数人可以做出不同的行为。因为你知道,不变量文化有/作为日期分隔符,这段代码根本不会引发任何异常:@SonerGönül,你是对的,我必须找到一个更好的例子。它返回正确的日期时间,就像运行代码的空格围绕字符串date值返回{6/2/2014 12:00:00 AM}对于初学者来说,如果不将字符串用双引号括起来,这将永远无法编译。因此,我不确定您如何获得2014年2月1日的价值。使用此代码返回有效的日期字符串fromdate=02-JUN-2014;DateTime dFromDate=Convert.ToDateTimefromdate;这是什么意思,但它被存储为2014年2月1日,这正是导致格式异常的原因?您成功地将字符串解析为DateTime,并在调试器中将您的DfFromDate视为2014年2月1日,或者您的fromdate实际上是2014年2月1日?@SonerGönül我运行代码,将字符串值用引号括起来,它返回一个有效的DateTime。不确定OP如何声明他们获得2014年2月1日,除非代码中还有其他地方他们试图转换不正确的日期。。我建议OP开始使用调试器并设置断点!对问题中的错误表示抱歉,我们现在已经改正了。很高兴人们理解并给出了必要的答案@SonerGönül它在调试器中显示为2014年2月6日,但即使在使用parseexact后,调试器也会以同样的方式显示它,但异常已被删除。@MethodMan是的,OP已更新至2014年2月1日至2014年2月6日,但仍然将其存储为2014年2月6日似乎很奇怪,因为根据选定的答案,OP甚至没有存储它,因为FormatException。这并没有回答问题。OP无法将字符串解析为DateTime,反之亦然。请注意,OP的CurrentCulture可能不是基于英语的。在这种情况下,此方法无法解析JUN部分。由于OP获得FormatException,我认为OP的代码已经成功编译。Just Convert.ToDateTime无法分析此字符串。你是对的,OP没有写,但忘记双引号在这里似乎不是一个例子。
String fromdate= "02-JUN-2014";
DateTime dFromDate = DateTime.ParseExact(fromdate,"dd-MMM-yyyy", 
                                         CultureInfo.InvariantCulture);
DateTime dFromDate = DateTime.ParseExact(fromdate, "dd-MMM-yyyy", CultureInfo.InvariantCulture);
String fromdate = "02-JUN-2014";
DateTime dFromDate = DateTime.ParseExact(fromdate, "dd-MMM-yyyy", 
                                         CultureInfo.InvariantCulture);
String fromdate= "02-JUN-2014";
DateTime dFromDate = Convert.ToDateTime(fromdate, CultureInfo.CurrentCulture);
String fromdate= "02-JUN-2014";
DateTime dFromDate = Convert.ToDateTime(fromdate, new CultureInfo("es-ES"));