一些时间类型的总结

转载 2013年10月01日 01:52:35

1. 系统时间函数

        在编程时,时间函数不可避免的会被使用。linux系统下相关时间的数据结构有time_t,timeval,timespec,tm,clock_t; windows下time_t,tm,SYSTEMTIME,FILETIME,clock_t。其中clock_t、timeval、timespec用于表示时间跨度,time_t、tm、SYSTEMTIME,FILETIME用于表示绝对时间。不同的数据结构之间,多少也有些差异。

        首先这些时间结构体的精度不同,Second(time_t/tm), microsecond(timeval/SYSTEMTIME),  100nanoSeconds(FILETIME),nanoSeconds(timespec)。还有一些结构和操作系统相关,如clock_t,windows下为1毫秒,POSIX 下为1微秒,对应clock_t,不同平台的差异,可以用宏CLOCKS_PER_SEC解决。

        起始时间不同,time_t起始于1970年1月1日0时0分0秒,tm表示起始于1900年,SYSTEMTIME/FILETIME起始于1601年,clock起始于机器开机。


Windows下特有的时间转换函数包括:

        GetLocalTime能够得到本地电脑设置时区的时间,得到的类型是SYSTEMTIME的类型。

  1. void GetSystemTime(LPSYSTEMTIME lpSystemTime);          // GetSystemTime函数获得当前的UTC时间  
  2. void GetLocalTime(LPSYSTEMTIME lpSystemTime);           // GetLocalTime获得当前的本地时间  
  3.   
  4. BOOL SystemTimeToFileTime(const SYSTEMTIME* lpSystemTime,    
  5.                           LPFILETIME lpFileTime);    
  6. BOOL FileTimeToSystemTime(const FILETIME* lpFileTime,    
  7.                           LPSYSTEMTIME lpSystemTime);    
  8. BOOL LocalFileTimeToFileTime(const FILETIME* lpLocalFileTime,    
  9.                              LPFILETIME lpFileTime);    
  10. BOOL FileTimeToLocalFileTime(const FILETIME* lpFileTime,    
  11.                              LPFILETIME lpLocalFileTime);    

Windows下特有的获取时间精度的函数包括(精度微秒):

  1. BOOL  QueryPerformanceFrequency(LARGE_INTEGER *lpFrequency);  
  2. BOOL  QueryPerformanceCounter(LARGE_INTEGER *lpCount);  


        我们回想一下程序中的时间数据结构和函数的用法,可以发现主要是2个目的:
        1. 获取绝对时间
        2. 获取两个时间点的相对时间


  Timestamp内部定义了一个Int64的变量_ts。存储了一个基于utc时间的64位int值,理论上可以提供微秒级的精度(实际精度依赖于操作系统)。由于Poco::Timestamp是基于UTC(世界标准时间或世界協調時間)的,所以它是独立于时区设置的。Poco::Timestamp实现了值语义,比较和简单的算术操作。
        1. UTC (Coordinated Universal Time)是从1582年10月15日深夜开始计时的. Poco库中精度为100纳秒。
        2. epoch time指是从1970年1月1日深夜开始计时的(指unix诞生元年)。Poco库中精度为1秒。

对时间的一些操作总结

由于项目要对时间进行一些数学运算,要使用 access 数据库交互一些时间的信息,于是乎便有了下文。。。 CTime Comparison OperatorsBOOL operator ==( CTi...
  • xum2008
  • xum2008
  • 2010年09月08日 17:15
  • 464

关于时间管理的一些心得

前言 你是否有这样的体会: 坐在电脑面前忙碌了一天,等到快下班的时候发现还有一大堆的事情没有做完,如果这种情况多次发生,我觉得你是时候对你的时间好好管理一下了。  轻重缓急 19世纪意大利经济学...
  • zdp072
  • zdp072
  • 2014年04月20日 15:29
  • 1591

C++中两种常用的记录程序运行时间的方法的总结

本篇博客对C++中常用的记录程序运行时间的方法进行简单的总结。
  • xiong452980729
  • xiong452980729
  • 2016年05月13日 13:13
  • 17004

MySQL 日期数据类型、时间类型使用总结

MySQL 日期类型:日期格式、所占存储空间、日期范围 比较。  日期类型        存储空间       日期格式                 日期范围  ------------ --...
  • snakorse
  • snakorse
  • 2014年02月28日 19:08
  • 632

JAVA-NIO-个人笔记

JAVA中可以使用内存映射文件来操作大文件.  最大可达2GB.
  • stonehigher125
  • stonehigher125
  • 2013年10月20日 16:44
  • 502

关于Calendar用法的一些总结

Calendar是一个抽象类,主要用来操作日历时间字段。在Java.util.Calendar包中,Calendar在开发中基本都会使用得到,这里对经常使用到的做个总结,也可能有遗漏,遇到再补,慢慢完...
  • tiantangdizhibuxiang
  • tiantangdizhibuxiang
  • 2017年08月20日 15:19
  • 210

C语言中时间相关函数总结

在项目中总会设计到时间记录的问题,需要选择合适函数,获得相应的时间格式,特别在网上查找了一些关于这方面的资料,进行了总结。  C/C++中的日期和时间    头文件  time.h     函数...
  • jsh13417
  • jsh13417
  • 2013年03月28日 22:22
  • 4806

java nio 学习总结1

本篇博客依照 Java NIO Tutorial 翻译,算是学习 Java NIO 的一个读书笔记。建议大家可以去阅读原文,相信你肯定会受益良多。 1. Java NIO Tutorial Java ...
  • zhaocuit
  • zhaocuit
  • 2017年06月19日 15:28
  • 303

SVM入门学习总结

因为做项目要用到SVM,就自学了几个月。在中国知网上看了很多论文,但现在又忘的差不多了,看来勤做笔记很重要。现在说一下我学习SVM的经验。 一、SVM(支持向量机)是一种常见的机器学习算法,主要用于...
  • gaiyindexingqiu
  • gaiyindexingqiu
  • 2016年07月23日 15:51
  • 522

关于微信的一些总结(一天进步一点,坚持不懈,成功会慢慢向你走进)

一、关于Android动态破解微信本地数据库(EnMicroMsg.db) 的步聚: 微信本地数据库的加密规则: 1.root手机,以便获取su权限,以及修改微信目录的读写权限。 2.获取手机IMEI...
  • u010725842
  • u010725842
  • 2017年10月21日 23:46
  • 259
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:一些时间类型的总结
举报原因:
原因补充:

(最多只允许输入30个字)