如何设置/ now DateTime类的日期格式解释?

时间:2014-01-20 13:31:19

标签: c# datetime

我有一个特定的循环,用于生成DateTime实例。我的问题是该类如何解释输入字符串。

传入的输入字符串格式为MM/dd/yyyy

假设我有"1/17/2014",DateTime会将其解释为MM/dd/yyyy

但如果我有"6/5/2014",我如何确定DateTime会使用格式MM/dd/yyyy dd/MM/yyyy来解析它?

编辑:输入可能以一位或两位数格式出现在月份和/或日期。

3 个答案:

答案 0 :(得分:2)

使用ParseExact功能指定格式:

DateTime d = DateTime.ParseExact("6/5/2014", "M/d/yyyy", CultureInfo.InvariantCulture);

如果您的输入采用 MM / dd / yyyy 格式,则会获得06/05/2014而不是6/5/2014。然后你必须使用:

DateTime d = DateTime.ParseExact("06/05/2014", "MM/dd/yyyy", CultureInfo.InvariantCulture);

如果您不想要例外,请确保输入格式。

答案 1 :(得分:2)

由于日期可以是MM/dd/yyyyM/d/yyyy,因此需要string[]的重载是最合适的:

var dt = DateTime.ParseExact(input,
    new[] { "M/d/yyyy", "MM/dd/yyyy" },
    CultureInfo.InvariantCulture,
    DateTimeStyles.None);

现在,无论零填充如何,它都会按预期工作。

答案 2 :(得分:1)

查看DateTime.ParseExact,这将允许您专门匹配字符串