C# 如何处理d/m/yyyy格式的日期?

C# 如何处理d/m/yyyy格式的日期?,c#,date-format,C#,Date Format,我必须处理日期。如果我指定的格式是mm/dd/yyyy,并且日期类似于2013年7月5日,则会引发格式异常。日期必须是2013年5月7日吗?如果是,我如何按计划将日期从2013年5月7日更改为2013年5月7日?日期格式也不具体。我可以使用mm-dd-yyyy或yyyy-mm-dd格式,日期可以是2013年7月5日。使用该方法,并将格式指定为M/d/yyyy(或d/M/yyyyy,具体取决于您的需要): 还有一个重载可以处理多种日期格式: var date = DateTime.ParseExa

我必须处理日期。如果我指定的格式是mm/dd/yyyy,并且日期类似于2013年7月5日,则会引发格式异常。日期必须是2013年5月7日吗?如果是,我如何按计划将日期从2013年5月7日更改为2013年5月7日?日期格式也不具体。我可以使用mm-dd-yyyy或yyyy-mm-dd格式,日期可以是2013年7月5日。

使用该方法,并将格式指定为
M/d/yyyy
(或
d/M/yyyyy
,具体取决于您的需要):

还有一个重载可以处理多种日期格式:

var date = DateTime.ParseExact(input, 
    new[] { "M/d/yyyy", "M-d-yyyy" }, 
    CultureInfo.InvariantCulture, 
    DateTimeStyles.None);
如果输入的格式不是允许的格式,则仍可能引发
FormatException
。为了更安全地处理此问题,请查看以下方法:

将日期转换回字符串时,不要忘记指定正确的格式/和不变区域性:

var output = date.ToString("MM/dd/yyyy", CultureInfo.InvariantCulture);

或者确实是,
d/m/yyyy
,因为这就是问题所在states@MarcGravell标题是这么说的,但问题本身并不明确。它能接受2013年11月12日或2013年9月15日这样的日期吗?请注意,这些日期应该使用
M
,不是
m
-
m
是几分钟。你应该添加
CultureInfo.InvariantCulture
,否则
/
将被本地化
DateTime date;
var success = DateTime.TryParseExact(
    input, 
    new[] { "M/d/yyyy", "M-d-yyyy" }, 
    CultureInfo.InvariantCulture, 
    DateTimeStyles.None, 
    out date);
var output = date.ToString("MM/dd/yyyy", CultureInfo.InvariantCulture);