`

DataTime.Ticks

    博客分类:
  • C#
阅读更多

java Date.getTime()


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;}
   
 属性值

表示此实例的日期和时间的刻度数。该值介于 MinValueMaxValue 之间。

备注

此属性的值为自 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日)开始过了多少时间。

比如精确地计算两个时间差时(想知道某段程序运行了多少毫微秒)就可以用到。

using System;
using System.Collections.Generic;

class Sentence
{
  static void Main()
  {
    long ticks0 = DateTime.Now.Ticks;
    for (int i = 0; i < int.MaxValue; i++)
    {
      // ...
    }
    long ticks1 = DateTime.Now.Ticks;
    long n = (ticks1 - ticks0) * 100;
    Console.WriteLine("上面这段程序运行了{0}毫微秒", n);
  }
}

 

转换成比用毫微秒更直观些:

 

using System;
using System.Collections.Generic;

class Sentence
{
  static void Main()
  {
    long ticks0 = DateTime.Now.Ticks;
    for (int i = 0; i < int.MaxValue; i++)
    {
      // ...
    }
    long ticks1 = DateTime.Now.Ticks;
    double n = (ticks1 - ticks0) / 10000000.0;
    Console.WriteLine("上面这段程序运行了{0}秒", n);
  }
}

 

 

 

获取高精度的时间差,可以用来分析页面运行时间的长短

DateTime.Now的精度是很低,这个低的意思是,两次获取的DateTime.Now的Ticks的差,只是一个较大数的整数倍。例如在我的机器上,这个差最小是10.114ms。所以,如果我用DateTime.Now来计算时间差,那么就无法精确到10ms以内。

后来发现ASP.NET的TRACE的精度很高,用Reflector看它的实现,发现了它是使用这两个方法的:

参考MSDN:How To: Time Managed Code Using QueryPerformanceCounter and QueryPerformanceFrequency

我自己了按照这个写了个类,代码如下:

 

using System;
using System.Runtime.InteropServices;
public class A
{
    [DllImport("kernel32.dll")]
    static extern bool QueryPerformanceCounter([In, Out] ref long lpPerformanceCount);
    [DllImport("kernel32.dll")]
    static extern bool QueryPerformanceFrequency([In, Out] ref long lpFrequency);

    static long _f = 0;

    static public long GetTickCount()
    {
        long f = _f;

        if (f == 0)
        {
            if (QueryPerformanceFrequency(ref f))
            {
                _f = f;
            }
            else
            {
                _f = -1;
            }
        }
        if (f == -1)
        {
            return Environment.TickCount * 10000;
        }
        long c = 0;
        QueryPerformanceCounter(ref c);
        return (long)(((double)c) * 1000 * 10000 / ((double)f));
    }

    //GetTickCount()为0时的DateTime.Ticks值
    static long _tc = 0;

    //这个返回的不是真正的精确时间,但时间与时间的差是精确的。
    //GetExactNow与DateTime.Now的偏差比DateTime.Now的精度还要小,所以该偏差
    static public DateTime GetExactNow()
    {
        if (_tc == 0)
        {
            long tc = GetTickCount();
            DateTime dt = DateTime.Now;
            _tc = dt.Ticks - tc;
            return dt;
        }

        return new DateTime(_tc + GetTickCount());
    }
}

 

 

在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.js 获取时间函数

    dataTime.js 获取时间函数

    sql中的smailint.datatime.nchar数据类型

    ### SQL 数据类型详解:smallint、datetime 和 nchar 在 SQL 中,选择合适的数据类型对于确保数据完整性和提高查询性能至关重要。本文将详细介绍 `smallint`、`datetime` 和 `nchar` 这三种数据类型的特点及其应用...

    datatime.rar

    标题“datatime.rar”指的是一个压缩包文件,其中包含了关于日期时间控件的优化代码。这个控件是使用JavaScript(js)编写的,目的是提供一个高效、灵活的日期时间选择功能,尤其适用于安卓移动设备和表格内的集成...

    datatime.zip

    时间日期控件,已经中文化了,简单清爽~ $(".form_datetime").datetimepicker({ ... format: "•yyyy/mm/dd hh:ii:ss", todayBtn:1, todayHighlight:1, autoclose:1, pickerPosition:'bottom-left' ...

    Web Calendar ver 3.0 网页日历控件!

    在深入探讨其功能和实现方式之前,我们可以先了解其核心组成部分——`datatime.js`。 `datatime.js` 文件是Web Calendar的核心脚本文件,它包含了日历控件的主要逻辑和交互处理。这个JavaScript库可能包含了以下...

    Unity Mirror 73.0.0

    1. Writer/Reader 支持 DataTime 2. NetworkRoomManager.ReadyStatusChange为虚方法 3. 可以为 pos/rot/scale 禁用NetworkTransform插值 4.NetworkBehaviour SyncVar 使用 netId 查找 解决: 1. 禁用或重新加载时,...

    DataTime

    在本案例中,"DataTime"可能是指一个编程教程或项目,与2008年北京奥运会这一历史事件相关联,可能是为了展示如何使用DateTime类或相关函数来计算或处理特定时间点的数据。 在许多编程语言中,如Java、C#、Python等...

    C#中常用的DataTime方法的总结,包括一些SQL的函数

    dt.Ticks.ToString(); // 获取 Tick 计数 4. 日期和时间的运算 dt.AddYears(1).ToString(); // 将日期和时间增加一年 dt.AddDays(1.1).ToString(); // 将日期和时间增加 1.1 天 dt.AddHours(1.1).ToString(); // ...

    c# 常见DataTime操作类

    C# 中的 DateTime 操作类 在 C# 中,DateTime 是一个非常重要的类,它提供了许多有用的方法来操作日期和时间。下面,我们将详细介绍 C# 中 DateTime 操作类的知识点。 1. 获取当前日期 使用 `DateTime.Now` 可以...

    MDK 插件.rarAStyle ,filecomments,functioncomment,datatime插件

    在给定的“MDK 插件.rar”压缩包中,包含了AStyle、filecomments、functioncomment和datatime这四个插件,它们各自针对不同的编程需求,下面将详细解释这些插件的功能和用途。 1. **AStyle插件**:Artistic Style,...

    datatime显示系统时间

    显示系统时间的代码

    DataTime 实时显示实例

    【标题】"DataTime 实时显示实例"是一个关于在客户端以非JavaScript方式实时展示系统时间的编程实践。这种技术可能适用于那些希望避免使用JavaScript或者在特定环境下无法使用JavaScript的场景。下面将详细介绍如何...

    VB silverlight 增强日期控件 可选时间

    txt.Text = Datatime.ToString("yyyy-MM-dd HH:mm") txt.Width = 125 txt.Height = 30 Dim btn As New Button() btn.Content = "请选择日期" AddHandler btn.Click, AddressOf btn_Click Me.Children.Add(txt...

    DateTime.Now函数

    DateTime.Now函数是.NET框架中用于获取当前系统时区时间的内置方法。这个函数属于System.DateTime结构,它提供了访问计算机本地时间的能力。在编程中,处理日期和时间是常见的任务,DateTime.Now则是处理这些任务的...

    解决mysql时间戳datatime存储四舍五入问题.docx

    在MySQL数据库中,时间戳(Timestamp)和日期时间(DateTime)是两种常见的日期和时间数据类型,用于存储和处理时间信息。在您的项目中遇到的问题是关于DateTime类型的字段在存储时出现了四舍五入的问题,这通常是...

    C#之DateTime函数使用总结_C#DateTime使用细节_

    - `DateTime.Ticks`属性表示自公元1年1月1日午夜以来的10亿分之一秒,可以用于精确的时间计算。 - `DateTime.FromFileTime`和`DateTime.ToFileTime`用于与文件系统中的时间戳进行转换。 7. **日期间隔** - `...

    Ey企业网站源代码

    4. **DataTime.aspx**:这个页面可能与日期和时间有关,可能是日历功能或者时间相关的动态显示。初学者可以从中学习到日期时间的处理技巧和在网页中实时更新时间的方法。 5. **list_softdownload.aspx**:这可能是...

    利用MICAPS系统功能开发应用应时气象资料 (2001年)

    这涉及到MICAPS系统的日期文件Wsdat.dat的使用,以及datatime.tab文件的传输文件名、检测文件名、本地目录、后处理程序等参数的灵活应用。 5. 天气实况的处理和展示:为了丰富气象信息的表现形式,除了文本展示,还...

Global site tag (gtag.js) - Google Analytics