找回密码
 立即注册

QQ登录

只需一步,快速开始

Leo

超级版主

20

主题

492

帖子

1070

积分

超级版主

Rank: 8Rank: 8

积分
1070

活字格认证微信认证勋章元老葡萄

Leo
超级版主   /  发表于:2010-4-29 10:36  /   查看:9073  /  回复:4
最近偶尔在调自动测试脚本的时候发现了.NET Framework 4.0中间TimeSpan类型Parse某些特殊的字符串有一些策略上的调整。
  1. TimeSpan timeSpan = TimeSpan.Parse("24:00:00");
复制代码
以上代码在.NET Framework 2.0中的结果是24小时。
但是在.NET Framework 4.0中解析出来的结果是24天。
以下代码却不会出现问题。
  1. TimeSpan timeSpan = TimeSpan.Parse("23:00:00");
复制代码
个人分析是某个微软的牛人认为小时字段不会出现24,直接认为"24: 00: 00"解释成24天更“智能”?
不晓得这位老兄对版本兼容性是怎么考虑的。

4 个回复

倒序浏览
gerry
论坛元老   /  发表于:2010-4-29 11:15:00
沙发
我认为调整为1:0:0:0才是正确的 24H 进位 1Day
回复 使用道具 举报
gerry
论坛元老   /  发表于:2010-4-29 11:23:00
板凳
在3.5里会直接抛出overflow异常。现在不抛异常给出一个不符合常理的day。我觉得不是一个好的实现。
回复 使用道具 举报
Carl
版主   /  发表于:2010-4-29 11:31:00
地板
查了一下MSDN,TimeSpan.Parse接受格式为[ws][-]{ d | [d.]hh:mm[:ss[.ff]] }[ws]
其中hh的解释为: Hours, ranging from 0 to 23.

按照这个解释,.NET2.0的实现算是bug,现在4.0把他给修了……
愿 Engine 归于沉寂,Timer 停止运动,Message Queue 不再流淌,Data Source 为我掌握
回复 使用道具 举报
robert
金牌服务用户   /  发表于:2010-5-5 08:35:00
5#
犯错误可以,改就是他的不对了。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部