我有一个特定的循环,用于生成DateTime实例。我的问题是该类如何解释输入字符串。
传入的输入字符串格式为MM/dd/yyyy
。
假设我有"1/17/2014"
,DateTime会将其解释为MM/dd/yyyy
。
但如果我有"6/5/2014"
,我如何确定DateTime会使用格式MM/dd/yyyy
和不 dd/MM/yyyy
来解析它?
编辑:输入可能以一位或两位数格式出现在月份和/或日期。
答案 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/yyyy
或M/d/yyyy
,因此需要string[]
的重载是最合适的:
var dt = DateTime.ParseExact(input,
new[] { "M/d/yyyy", "MM/dd/yyyy" },
CultureInfo.InvariantCulture,
DateTimeStyles.None);
现在,无论零填充如何,它都会按预期工作。
答案 2 :(得分:1)
查看DateTime.ParseExact,这将允许您专门匹配字符串