使用下面的DateTime.TryPaseExact方法可以在预期的时候给出不同的输出.
我从以下代码返回以下格式:
2014-02-10 18:32:37
1402-10-18 17:23:00 (which is clearly incorrect)
Run Code Online (Sandbox Code Playgroud)
我如何才能获得yyyy-MM-dd HH:mm:ss返回的格式?
static readonly string[] DateFormats = new string[] { "yyMMddHHmm", "yyyyMMddHHmm", "yyMMddHHmmss", "yyyy-MM-dd HH:mm:ss" };
DateTime date;
DateTime.TryParseExact("140211090915", DateFormats, CultureInfo.InvariantCulture,
DateTimeStyles.AssumeLocal, out date);
Run Code Online (Sandbox Code Playgroud)
此外,如果有人可以解释为什么此140211084947输入返回预期的格式并140211090915返回不需要的格式,我将不胜感激
很明显你错了.
当格式为时yyMMddHHmmss,它将第一个2数字作为一年,在这种情况下14是自动转换为2014.
当格式类似的情况下yyyy....,它会将第一个4数字作为一年,在您的情况下1402.
从 The "yy" Custom Format Specifier
在解析操作中,使用"yy"自定义格式说明符解析的两位数年份将根据
Calendar.TwoDigitYearMax格式提供程序的当前日历的属性进行解释 .
此属性允许将2位数年份正确转换为4位数年份.例如,如果此属性设置为2029,则100年范围为1930年至2029年.因此,2位数值30将被解释为1930,而2位数值29则被解释为2029.
正如Marcin 所说,你的字符串输入yyMMddHHmm与yyyy-MM-dd HH:mm:ss格式不匹配.
您的140211084947字符串与yyMMddHHmmss格式匹配,但与格式不匹配yyyyMMddHHmm(因为49不是有效小时)
| 归档时间: |
|
| 查看次数: |
297 次 |
| 最近记录: |