低价网站建设哪个好,怎么制作app软件赚钱,网站开发 职位晋升路线,广州建设公共资源交易中心老赵在介绍Routing扩展的WebCast中出了点“小状况”#xff0c;即将DateTime.ToString(“yyyy-MM-dd”)修改为DateTime.ToString(“yyyy/MM/dd”)后#xff0c;页面中仍然显示为yyyy-MM-dd样式的日期格式。相信看过WebCast的同学都还记得吧。我不解#xff0c;将老赵代码中D…老赵在介绍Routing扩展的WebCast中出了点“小状况”即将DateTime.ToString(“yyyy-MM-dd”)修改为DateTime.ToString(“yyyy/MM/dd”)后页面中仍然显示为yyyy-MM-dd样式的日期格式。相信看过WebCast的同学都还记得吧。我不解将老赵代码中DateTimeFotmatter的Formate属性修改为yyyy/MM/dd在页面中输入yyyy-MM-dd样式的日期仍然没有抛出任何异常。这是怎么回事难道日期转换失灵了吗 老赵在做日期转换时使用了DateTime.TryParseExact那么我们就来看看这个TryParseExact是否在正常工作。DateTime output;
DateTime.TryParseExact(2009-06-04, yyyy/MM/dd, null, DateTimeStyles.None, out output);
Console.WriteLine(output.ToString()); 以上代码的输出结果果然让人大跌眼镜日期居然能正确转换 难道TryParseExact的第二个参数format没有作用吗将/改成.居然又不能转换了 看来是/这个符号的问题。请出Reflector将mscorlib.dll反编译找到DateTime.TryParseExact方法一步一步跟进去。发现如果该方法的IFormatProvider参数为null将获取当前线程的CultureInfo的DateTimeFormat属性作为IFormatProvider然后在DateTimeParse.ParseByFormat方法中遇到format参数的/字符时会比较输入日期字符串的当前字符是否为当前DateTimeFormatInfo的DateSeperator如果是则返回true即允许转换如果不是则返回false。CultureInfo cultureInfo Thread.CurrentThread.CurrentCulture;
Console.WriteLine(cultureInfo.DateTimeFormat.DateSeparator); 而以上代码输出的恰恰为-也就是说当前线程的区域信息中日期分隔符即为-因此转换得以成功。 如果您使用DateTimeFormatInfo dtfi new CultureInfo(zh-CN, false).DateTimeFormat;
DateTime output;
DateTime.TryParseExact(2009-06-04, yyyy/MM/dd, dtfi, DateTimeStyles.None, out output);
Console.WriteLine(output.ToString());则转换失败因为在初始化CultureInfo时第二个参数为false意味着不使用用户选定的区域性设置而使用默认的设置这时的DateSeparator为/至此谜底全部解开。// 小贴士遇到.NET Framework内部实现的问题时使用Reflector反编译类库并查看源代码的方式往往可以解决您的问题转载于:https://www.cnblogs.com/kirinboy/archive/2009/06/04/1496258.html