如何处理d/m/yyyy的日期?

use*_*901 2 c# date-format

我必须处理日期.如果我指定的格式是mm/dd/yyyy且日期类似于7/5/2013,那么它会抛出格式异常.日期是否必须像2013年5月7日一样?如果是,我如何以编程方式将日期从2013年7月5日更改为07/05/2013?并且日期格式不具体.我的日期可以是mm-dd-yyyy或yyyy-mm-dd,日期可以是7-5-2013.

p.s*_*w.g 9

使用该ParseExact方法,并将格式指定为M/d/yyyy(或d/M/yyyy根据您的具体需要):

var date = DateTime.ParseExact(input, "M/d/yyyy");
Run Code Online (Sandbox Code Playgroud)

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

var date = DateTime.ParseExact(input, 
    new[] { "M/d/yyyy", "M-d-yyyy" }, 
    CultureInfo.InvariantCulture, 
    DateTimeStyles.None);
Run Code Online (Sandbox Code Playgroud)

FormatException如果输入不是允许的格式之一,这可能仍会抛出.为了更安全地处理这个问题,请看一下TryParseExact方法:

DateTime date;
var success = DateTime.TryParseExact(
    input, 
    new[] { "M/d/yyyy", "M-d-yyyy" }, 
    CultureInfo.InvariantCulture, 
    DateTimeStyles.None, 
    out date);
Run Code Online (Sandbox Code Playgroud)

当您将日期转换回字符串时,不要忘记指定正确的格式/和不变文化:

var output = date.ToString("MM/dd/yyyy", CultureInfo.InvariantCulture);
Run Code Online (Sandbox Code Playgroud)

  • @ user2668901:`M/d/yyyy`将接受`9/15/2013`,是的. (3认同)
  • 请注意,这些应该使用`M`,而不是`m` - `m`是几分钟. (2认同)
  • 你应该添加`CultureInfo.InvariantCulture`,否则`/`将被本地化我认为 (2认同)