一、time函数

函数名:time()

功能:获取当前的系统时间

用法:time_ttime(time_t * time)

对应的头文件:time.h

说明:

time函数的返回值是long的类型,

其精度为秒,

其形参一般选为NULL(即time(NULL)).

其值为从CUT(CoordinatedUniversal Time)时间(即1970年1月1日00:00:00,也就是UNIX系统的Epoch时间)到当前时刻的秒数,但因为“time_t“使用一个有符号的32位整数(signed int32)来存储计算的秒数,所以其最后时间是2147483647秒(也就是格林乔治时间2038年1月19日凌晨03:14:07),但就是个小知识点,不用太关心。

因为time的精度为秒,所以如果对一些时间要求更精确点,便得使用精度更高的时间函数,不然其结果就会如下面的程序一样,结果一直一样,这是因为短期的循环计算机不会花费太多的时间。

# include
# include # include <windows.h>int main()
{for(int i=0;i<1000;i++) {printf("%d\n", GetTickCount(NULL));for(int j=0;j<1000;j++);}return 0;
}

二、更高精度的时间函数

1、gettimeofday

函数名:gettimeofday

功能:获取当前的精确系统时间

用法:int gettimeofday(structtimeval * tv,struct timezone *tz);

对应的头文件:sys/time.h

说明:

其参数tv是保存获取时间结果的结果体,参数tz用于保存时区结果:

struct timezone{

inttz_minuteswest;  //格林威治时间往西方的时差

inttz_dsttime;      //DST时间的修正方式

}

timezone参数若不使用则可设为NULL(如:gettimeofday(tv,NULL)),

struct timeval{

long int tv_sec;   //秒数

long int tv_usec;  //微妙数

}

使用gettimeofday()函数还需要先定义一下struct timeval的变量,

而使用gettimeofday()获得的时间的精度会精确到微妙(1e-6s)量级。

其值为从CUT(CoordinatedUniversal Time)时间(即1970年1月1日00:00:00,也就是UNIX系统的Epoch时间)到当前时刻的秒数,其也与time一样存在着2038年的问题。

但它是适用于Linux系统的,在windows下面使用比较麻烦,而windows也存在这类似功能的函数。

2、GetLocalTime

函数名:GetLocalTime

功能:获取当前的精确系统时间

用法:voidGetLocalTime(LPSYSTEMTIME lpSystemtime)

对应的头文件:windows.h

说明:

其参数lpSystemtime是指向一个用户自定义包含日期和时间信息的SYSTEMTIME类型的变量,该变量可用于保存函数获取的时间。

typedef struct SYSTEMTIME{

WORD wYear;       //年

WORD wMonth;      //月

WORD wDayOfWeek;  //星期,0为星期日,1为星期一,2为星期二……

WORD wDay;        //日

WORD wHour;       //时

WORD wMinute;     //分

WORD wSecond;      //秒

WORD wMilliseconds;  //毫秒

}SYSTEMTIME,*PSYSTEMTIME;

一般将GetLocalTime转化为gettimeofday来提高程序在windows和Linux的通用性。

#include
#ifdef WIN32#include #else#include #endif#ifdef WIN32
int gettimeofday(struct timeval *tp, void *tzp)
{time_t clock;struct tm tm;SYSTEMTIME wtm;GetLocalTime(&wtm);tm.tm_year         = wtm.wYear - 1900;tm.tm_mon           = wtm.wMonth - 1;tm.tm_mday            = wtm.wDay;tm.tm_hour          = wtm.wHour;tm.tm_min          = wtm.wMinute;tm.tm_sec            = wtm.wSecond;tm.tm_isdst          = -1;clock             = mktime(&tm);tp->tv_sec            = clock;tp->tv_usec         = wtm.wMilliseconds * 1000;return (0);
}
#endif

3、GetTickCount函数

函数名:GetTickCount

功能:获取当前的精确系统时间

用法:DWROD GetTickCount(void)

对应的头文件:windows.h

说明:

其返回了从操作系统启动所经过的毫秒数,其返回值为32位的双字类型DWROD。

# include
# include # include int main()
{for(int i=0;i<1000;i++) {printf("%d\n", GetTickCount(NULL));for(int j=0;j<1000;j++);}return 0;
}
可以发现GetTickCount()虽说是能返回毫秒级的精度,但因为计算机的一些原因,其精度一般保存在18ms左右。
所以在srand()初始化rand()的初始种子时,尽量在循环外面,而不是里面。
此外,时间函数可以用来指定延迟时间的长短,
void delay(int n)
{
int time_first = 0;
int time_end = 0;

time_first = (int)(GetTickCount());

while (1){
for (int i = 0; i < 1000; i++)
for (int j = 0; j < 10000; j++);
time_end = (int)(GetTickCount());
if (time_end >(time_first + n))
break;
}
}

time()等时间函数的使用相关推荐

  1. MySQL 学习笔记(3)— 字符串函数、数值函数、日期时间函数、流程函数、聚集函数以及分组数据

    1. 字符串函数 MySQL 的常用函数包括字符串函数.数值函数.日期时间函数.流程函数等. SELECT ascii("abc"),char(97),concat("h ...

  2. java调用系统时间函数_JAVA自学笔记:不使用系统函数来计算日期处于当年的第多少天...

    前段时间练习了一个求闰年的功能,现在就可以用上啦,这次写一个不借助类库的时间函数,利用基础代码写一个计算求日期处于当年的第多少天的函数. 虽然也有简单的方法,例如直接定义每月的天数累加,然后加上当月的 ...

  3. SqlServer时间函数的使用例子整理

    为什么80%的码农都做不了架构师?>>>    整理SqlServer2008的时间函数如下: 1.获取系统时间 select getdate(); --2012-05-06 22: ...

  4. Sql Server函数全解(四)日期和时间函数

    阅读目录 1.获取系统当前日期的函数getDate(); 2.返回UTC日期的函数UTCDATE() 3.获取天数的函数DAY(d) 4.获取月份的函数MONTH(d) 5.获取年份的函数YEAR(d ...

  5. PHP 中日期时间函数 date() 用法总结

    [导读] date()是我们常用的一个日期时间函数,下面我来总结一下关于date()函数的各种形式的用法,有需要学习的朋友可参考.格式化日期date() 函数的第一个参数规定了如何格式化日期 时间.它 ...

  6. php入门时间,php入门教程(二十一) php日期与时间函数

    本节内容: php日期与时间函数 PHP提供了很多的处理日期和时间的函数,包括time().date().mktime().checkdate().microtime().strtotime()等,详 ...

  7. python时间函数报错_python3中datetime库,time库以及pandas中的时间函数区别与详解...

    1介绍datetime库之前 我们先比较下time库和datetime库的区别 先说下time 在 Python 文档里,time是归类在Generic Operating System Servic ...

  8. mysql 时区与时间函数

    --在mysql中可以直接使用sleep()函数,sysdate函数返回的是执行到当前函数的时间,而now函数返回的是执行sql的时间 mysql> SELECT now(),SYSDATE() ...

  9. pg数据库生成随机时间_postgresql 时区与时间函数-阿里云开发者社区

    postgresql 时区与时间函数 rudygao 2016-02-03 1951浏览量 简介: --把时间戳转成epoch值 postgres=# select extract(epoch fro ...

  10. Sql server中时间函数用法详解

    SQL中的时间函数非常有用,特别是在我们进行初始赋值.复杂查询的时候,就显得特别方便. 1.获得系统当前时间 select getdate()  2.DateName ( datepart , dat ...

最新文章

  1. AngularJs学习笔记--Forms
  2. OutputCache各参数的说明【转】
  3. python实现傅里叶变换求幅值和相位_Python 实现图像快速傅里叶变换和离散余弦变换...
  4. lucene使用3.0.3_Apache Lucene 5.0.0即将发布!
  5. 【算法分析与设计】浅析算法复杂度
  6. C#中is vs as
  7. Windows互斥锁的使用
  8. 服务器自动post,Go Web服务器自动重定向POST请求
  9. bzoj 4129 Haruna’s Breakfast 树上莫队
  10. 查看python版本和django版本
  11. SQLite Tutorial 4 : How to export SQLite file into CSV or Excel file
  12. React.js小书
  13. 网赚APP资源下载类网站源码
  14. 华为快应用 阻止事件冒泡
  15. 大国的崛起:第二集:小国大业 荷兰
  16. 使用000webhost.com免费主机搭建一个WordPress站点
  17. html和css的图片怎么加,html+css如何在图片上添加文字
  18. 如何使用Elasticsearch构建强大的搜索和分析应用程序(2023年最新ES新手教程)
  19. Zoom Out and Observe:News Environment Perception for Fake News Detection
  20. 锚点的作用是什么?如何创建锚点?

热门文章

  1. Eclipse3.1.2 汉化 过程 中文版
  2. MyBatis构架设计学习------MyBatis的整体架构
  3. vue全家桶初步了解
  4. 二分图匹配 hdu 2063
  5. HTTP状态码206
  6. 基于数据安全的沙盘推演体系
  7. 微信小程序开发之WXSS模板样式与WXS脚本语言
  8. Tars环境搭建(超详细版)
  9. winfrom软件开发汽车测试_节省75%研发费用!飞算全自动软件工程平台助力软件开发企业突围...
  10. Image\Video matting论文调研