C# 一段简单的代码,Run/Debug的结果却不一致,很有意思,请知情者不吝赐教

eloneme 2009-10-11 11:53:24
代码如下:

DateTime dt = DateTime.UtcNow;
DateTime now = DateTime.Now;
DateTime d = DateTime.Parse(DateTime.Now.ToLongTimeString());
TimeSpan ts1 = d - dt;
Console.WriteLine("h1---"+ts1.Hours);
System.TimeSpan ts2 = now-dt;
Console.WriteLine("h2---"+ts2.Hours);


直接运行:
h1---7
h2---8

单步跟踪调试结果:
h1---8
h2---8

如果是debug,有断点,但一直按F5,结果同直接运行

环境:vs2003 .netframework 版本低,高版本上未验证
...全文
108 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
_see_you_again_ 2009-10-11
  • 打赏
  • 举报
回复
TimeSpan ts1 = DateTime.Now - DateTime.UtcNow;
改成这样就可以了;记得每次调用Now结果是不一样的
_see_you_again_ 2009-10-11
  • 打赏
  • 举报
回复
不是说差了一个小时,其实只差了1秒不到
你调用了两次DateTime.Now 这两次其实也是有时间差的 07:59:59在小时单位仍然是7
shuifengcun 2009-10-11
  • 打赏
  • 举报
回复
还真奇怪
_see_you_again_ 2009-10-11
  • 打赏
  • 举报
回复
通过调试得出
直接运行时ts1 = {07:59:59.3990576}
单步调试稍微慢1秒 ts1 = {08:00:02.9530856}

所以还是单步调试时间差的问题
eloneme 2009-10-11
  • 打赏
  • 举报
回复
和单步调试时间延迟应该没关系,我求的是小时差,如果有关系也仅应该在临界点会有问题,但这个结果是固定的
北京时间,东8区,结果都应该如下:
h1---8
h2---8
fflyn 2009-10-11
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 herojams 的回复:]
单步调试会有时间延迟
[/Quote]
不会差到Hours吧?
_see_you_again_ 2009-10-11
  • 打赏
  • 举报
回复
单步调试会有时间延迟
eloneme 2009-10-11
  • 打赏
  • 举报
回复
我的目的就是求当前时间和utc时间的小时差,现在是run和debug结果不一致,和毫秒数会有什么关系呢?
fflyn 2009-10-11
  • 打赏
  • 举报
回复
这个 还真没见过
南山五味子 2009-10-11
  • 打赏
  • 举报
回复
把毫秒数加上,看看还一样不

111,092

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧