DataTime.Now.Ticks
getTime public long getTime() 返回自 1970 年 1 月 1 日 00:00:00 GMT 以来此 Date 对象表示的毫秒数。 返回: 自 1970 年 1 月 1 日 00:00:00 GMT 以来此日期表示的毫秒数。 .net DateTime.Ticks public long Ticks {get;} 属性值
表示此实例的日期和时间的刻度数。该值介于 MinValue 和 MaxValue 之间。
备注
此属性的值为自 0001 年 1 月 1 日午夜 12:00 以来所经过时间以 100 毫微秒为间隔表示时的数字。
1秒=1000毫秒(ms) 1毫秒=1/1,000秒(s) 1秒=1,000,000 微秒(μs) 1微秒=1/1,000,000秒(s) 1秒=1,000,000,000 纳秒(ns) 1纳秒=1/1,000,000,000秒(s) 1秒=1,000,000,000,000 皮秒(ps)
1 毫秒 = 10^-3 秒, ------->10的-3次方 小数点从1开始向左移3位即0.001 1 微秒 = 10^-6 秒, 1 毫微秒 = 10^-9 秒, 100 毫微秒 = 10^-7 秒。
Console.WriteLine(DateTime.Now.Ticks); // 输出:633603924670937500
也就是说,从0001 年 1 月 1 日午夜 12:00:00 以来到现在已经过了 633603924670937500 * 10^-7 秒。
很少用,除非需要很精确地知道从那时(1年1月1日)开始过了多少时间。
比如精确地计算两个时间差时(想知道某段程序运行了多少毫微秒)就可以用到。
1.using System; 2.using System.Collections.Generic; 3. 4.class Sentence 5.{ 6. static void Main() 7. { 8. long ticks0 = DateTime.Now.Ticks; 9. for (int i = 0; i < int.MaxValue; i++) 10. { 11. // ... 12. } 13. long ticks1 = DateTime.Now.Ticks; 14. long n = (ticks1 - ticks0) * 100; 15. Console.WriteLine("上面这段程序运行了{0}毫微秒", n); 16. } 17.}
转换成秒比用毫微秒更直观些:
1.using System; 2.using System.Collections.Generic; 3. 4.class Sentence 5.{ 6. static void Main() 7. { 8. long ticks0 = DateTime.Now.Ticks; 9. for (int i = 0; i < int.MaxValue; i++) 10. { 11. // ... 12. } 13. long ticks1 = DateTime.Now.Ticks; 14. double n = (ticks1 - ticks0) / 10000000.0; 15. Console.WriteLine("上面这段程序运行了{0}秒", n); 16. } 17.}
获取高精度的时间差,可以用来分析页面运行时间的长短
DateTime.Now的精度是很低,这个低的意思是,两次获取的DateTime.Now的Ticks的差,只是一个较大数的整数倍。例如在我 的机器上,这个差最小是10.114ms。所以,如果我用DateTime.Now来计算时间差,那么就无法精确到10ms以内。
后来发现ASP.NET的TRACE的精度很高,用Reflector看它的实现,发现了它是使用这两个方法的:
参考MSDN:How To: Time Managed Code Using QueryPerformanceCounter and QueryPerformanceFrequency
我自己了按照这个写了个类,代码如下:
1.using System; 2.using System.Runtime.InteropServices; 3.public class A 4.{ 5. [DllImport("kernel32.dll")] 6. static extern bool QueryPerformanceCounter([In, Out] ref long lpPerformanceCount); 7. [DllImport("kernel32.dll")] 8. static extern bool QueryPerformanceFrequency([In, Out] ref long lpFrequency); 9. 10. static long _f = 0; 11. 12. static public long GetTickCount() 13. { 14. long f = _f; 15. 16. if (f == 0) 17. { 18. if (QueryPerformanceFrequency(ref f)) 19. { 20. _f = f; 21. } 22. else 23. { 24. _f = -1; 25. } 26. } 27. if (f == -1) 28. { 29. return Environment.TickCount * 10000; 30. } 31. long c = 0; 32. QueryPerformanceCounter(ref c); 33. return (long)(((double)c) * 1000 * 10000 / ((double)f)); 34. } 35. 36. //GetTickCount()为0时的DateTime.Ticks值 37. static long _tc = 0; 38. 39. //这个返回的不是真正的精确时间,但时间与时间的差是精确的。 40. //GetExactNow与DateTime.Now的偏差比DateTime.Now的精度还要小,所以该偏差 41. static public DateTime GetExactNow() 42. { 43. if (_tc == 0) 44. { 45. long tc = GetTickCount(); 46. DateTime dt = DateTime.Now; 47. _tc = dt.Ticks - tc; 48. return dt; 49. } 50. 51. return new DateTime(_tc + GetTickCount()); 52. } 53.}
在ASP。NET的应用,可以在Global.asax的Application_BeginRequest事件中加入代码来纪录程序开始时的TickCount:
Context.Items["BeginRequestTickCount"]=A.GetTickCount();
然后在页面输出的后面:
<html>.... <div align="center"> <%=new TimeSpan(A.GetTickCount()-(long)Context.Items["BeginRequestTickCount"]).TotalMilliseconds%> </div> </body></html>
这样就可以达到获取页面运行时间值了。(当然输出TotalMilliseconds后Asp.Net还要一些后期工作的,不过这个时间应该只需要0.n ms)
1秒=1000000000毫微秒 10亿
1秒=1000000000毫微秒
1秒=1000000000毫微秒(10亿分之一秒)
1秒=1000豪秒 1毫秒=1000微秒 1微秒=1000毫微秒 所以1秒=1000*1000*1000=1000000000毫微秒
1秒=1000豪秒 1毫秒=1000微秒 1微秒=1000毫微秒 1毫微秒=1纳秒 1纳秒=10埃秒
1秒 = 1000 毫秒 = 1000000 微秒 = 1000000000 毫微秒 = 1000000000 纳秒 = 1000000000000 皮秒
1s = 1000 ms = 1000000 us = 1000000000 ns = 1000000000000 ps
1(秒)=10的9次方(毫微秒)
<!--End_rbody_41637559//--><!--End_rbody_41637167//-->
DataTime.Now.Ticks的更多相关文章
- DataTime.Now.Ticks的应用
参考:http://www.cnblogs.com/delphinet/archive/2011/06/09/2075985.html 转换成秒: using System; using System ...
- 关于DateTime.Now.Ticks
DataTime.Now.Ticks 的值表示自 0001 年 1 月 1 日午夜 12:00:00 以来所经历的以 100 纳秒为间隔的间隔数,可用于较精确的计时. 1秒=1000豪秒 1毫秒=10 ...
- [No00003B]string格式的日期时间字符串转为DateTime类型
新建console程序,复制粘贴直接运行: /**/ //using System.Globalization;//代码测试大致时间2015/11/3 15:09:05 //方法一:Convert.T ...
- Unity的常用API
1.Event Function:事件函数 Reset() :被附加脚本时.在游戏物体的组件上按Reset时会触发该事件函数 Start() :在游戏初始化时会执行一次 Update() :每一帧 ...
- 【watcher】 #02 c# 中实现时间戳等,日期数字及大概率绝对随机数 实现
在Wacher的项目中,用到了很多时间记录的地方,为了将来能够和在线数据打通,我们使用了时间戳来记录时间信息 由于c# 没有现成的方法,所以我们重新写了一个Helper类来帮助我们使用这些公共函数 同 ...
- c#滑窗缓存
前言 在大数据时代,软件系统需要具备处理海量数据的能力,同时也更加依赖于系统强大的存储能力与数据响应能力.各种大数据的工具如雨后春笋般孕育而生,这对于系统来说是极大的利好.但在后端采用分布式.云存储和 ...
- Unity3D_(API)Random随机数
Unity随机数Random官方文档: 传送门 一.生成一个随机数 二.Random.InitState()生成伪随机数 三.官方文档中常用的方法 创建一个Cube用来挂载Random_Gary.cs ...
- C# 中Datatime类用法总结
C# 中Datatime类用法总结 收集了一些记录下来,这些有的是从网上找的,有些是自己使用到的: DateTime dt = DateTime.Now; dt.ToString();//2005-1 ...
- C# 中的时间(DataTime)
在做报表或查询的时候,常常会预设一些可选的日期范围,如本周.本月.本年等,利用 C# 内置的DateTime基本上都可以实现这些功能. 当前时间: DateTime dt = DateTime.Now ...
随机推荐
- 多项式fft、ntt、fwt 总结
做了四五天的专题,但是并没有刷下多少题.可能一开始就对多项式这块十分困扰,很多细节理解不深. 最简单的形式就是直接两个多项式相乘,也就是多项式卷积,式子是$N^2$的.多项式算法的过程就是把卷积做一种 ...
- vue实现全选框效果
vue实现全选框效果 一.总结 一句话总结: 全选的checkbox点击的时候判断这个checkbox的状态,如果没选中,说明下一个操作是选中所有 下面的每个checkbox判断一下是否所有的chec ...
- 怎样在VMware虚拟机中使用安装并设置Ubuntu系统
1 2 3 4 5 6 7 分步阅读 Ubuntu 系统是一款优秀的.基于GNU/Linux 的平台的桌面系统. 当然,目前为止很多应用程序还完全不能允许运行在 Ubuntu 系统上,而且 Ubunt ...
- Container 布局容器
Container 布局容器 用于布局的容器组件,方便快速搭建页面的基本结构: <el-container>:外层容器.当子元素中包含 <el-header> 或 <el ...
- linux:解决SSH连接Linux超时自动断开
用SSH登录到Linux的时候,由于默认的连接超时时间很短,经常断开! 1.修改文件 # vi /etc/ssh/sshd_config 2.重启sshd服务 # /etc/init.d/sshd r ...
- Vue报错 Duplicate keys detected: '1'. This may cause an update error. vue报错
情况一.错误信息展示为关键字‘keys‘,此时应该检查for循环中的key,循环的key值不为唯一性 (很普通) 情况二.有两个相同的for循环,而这两个for循环的key值是一样的,此时将一个的ke ...
- Spring事务管理3----声明式事务管理(1)
声明式事务管理(1)基于 基于 tx/aop 这种事务管理相比编程式事务管理来说对业务层基本没有改动,通过 TransactionProxyFactoryBean 创建业务层的代理,通过A ...
- JAVA 基础编程练习题24 【程序 24 根据输入求输出】
24 [程序 24 根据输入求输出] 题目:给一个不多于 5 位的正整数,要求:一.求它是几位数,二.逆序打印出各位数字. package cskaoyan; public class cskaoya ...
- c# 子窗体居中父窗体
1.设置CenterParent不管用.只好用代码控制. frmRunning_ = new FrmRunning(); frmRunning_.StartPosition = FormStartPo ...
- vue项目中使用v-for的方法莫名提示错误
错误示例: 解决方法一: 在v-for后面绑定key,示例如下→ 解决方法二: 点击左下角“设置”>“用户设置”内添加一下代码片段: { "vetur.validation.templ ...