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的更多相关文章

  1. DataTime.Now.Ticks的应用

    参考:http://www.cnblogs.com/delphinet/archive/2011/06/09/2075985.html 转换成秒: using System; using System ...

  2. 关于DateTime.Now.Ticks

    DataTime.Now.Ticks 的值表示自 0001 年 1 月 1 日午夜 12:00:00 以来所经历的以 100 纳秒为间隔的间隔数,可用于较精确的计时. 1秒=1000豪秒 1毫秒=10 ...

  3. [No00003B]string格式的日期时间字符串转为DateTime类型

    新建console程序,复制粘贴直接运行: /**/ //using System.Globalization;//代码测试大致时间2015/11/3 15:09:05 //方法一:Convert.T ...

  4. Unity的常用API

    1.Event Function:事件函数   Reset() :被附加脚本时.在游戏物体的组件上按Reset时会触发该事件函数 Start() :在游戏初始化时会执行一次 Update() :每一帧 ...

  5. 【watcher】 #02 c# 中实现时间戳等,日期数字及大概率绝对随机数 实现

    在Wacher的项目中,用到了很多时间记录的地方,为了将来能够和在线数据打通,我们使用了时间戳来记录时间信息 由于c# 没有现成的方法,所以我们重新写了一个Helper类来帮助我们使用这些公共函数 同 ...

  6. c#滑窗缓存

    前言 在大数据时代,软件系统需要具备处理海量数据的能力,同时也更加依赖于系统强大的存储能力与数据响应能力.各种大数据的工具如雨后春笋般孕育而生,这对于系统来说是极大的利好.但在后端采用分布式.云存储和 ...

  7. Unity3D_(API)Random随机数

    Unity随机数Random官方文档: 传送门 一.生成一个随机数 二.Random.InitState()生成伪随机数 三.官方文档中常用的方法 创建一个Cube用来挂载Random_Gary.cs ...

  8. C# 中Datatime类用法总结

    C# 中Datatime类用法总结 收集了一些记录下来,这些有的是从网上找的,有些是自己使用到的: DateTime dt = DateTime.Now; dt.ToString();//2005-1 ...

  9. C# 中的时间(DataTime)

    在做报表或查询的时候,常常会预设一些可选的日期范围,如本周.本月.本年等,利用 C# 内置的DateTime基本上都可以实现这些功能. 当前时间: DateTime dt = DateTime.Now ...

随机推荐

  1. 问题MySQL Error (2013): Lost connection to MySQL server at waiting for initial communication packet

    错误说明: SQL Error (2013): Lost connection to MySQL server at 'waiting for initial communication packet ...

  2. Heat map 绘图神奇

    https://study.163.com/provider/400000000398149/index.htm?share=2&shareId=400000000398149(博主视频教学主 ...

  3. vue2.0+vue-video-player实现hls播放的案例

    1. 安装依赖. npm install vue-video-player --save 2. 在main.js引入vue-video-player. import VueVideoPlayer fr ...

  4. android指纹识别认证实现

    Android从6.0系统支持指纹认证功能 启动页面简单实现 package com.loaderman.samplecollect.zhiwen; import android.annotation ...

  5. C之数组

    1. 数组的地址就是数组里元素的首地址 2. 数组其实就是一块连续的内存空间 3. 每个元素所占大小取决于数组的类型 4. 所有指针变量在内存中的长度是一样的

  6. 阶段5 3.微服务项目【学成在线】_day04 页面静态化_22-页面静态化-静态化测试-静态化程序测试

    测试service内些的静态化的方法 先新建一个测试类 模板的id 放到下拉的静态数据里面 这样这条数据 就是用用的轮播图005这个模板 把这条数据静态化 进入到断点里面.先获取数据模型 获取模板时 ...

  7. PAT 甲级 1030 Travel Plan (30 分)(dijstra,较简单,但要注意是从0到n-1)

    1030 Travel Plan (30 分)   A traveler's map gives the distances between cities along the highways, to ...

  8. clientdataset的使用

      clientdataset的使用(一) Delphi做为一个快速应用开发工具,深受程序员的喜爱.其强大的组件功能,让程序员能够轻松. 高效地完成常见的界面开发.数据库应用等功能.然而,帮助的相对缺 ...

  9. Kibana——安装部署

    1.准备 JDK:1.8版本及以上: Kibana:6.2.4版本: 2.安装 2.1.下载解压 wget https://artifacts.elastic.co/downloads/kibana/ ...

  10. 文件上传跨域解决方案-jQuery-File-Upload

    GIT 下载地址 https://github.com/blueimp/jQuery-File-Upload 亲测HTTPS HTTP跨域无压力 不用自带的DEMO 用下面的DEMO <!DOC ...