ftime() 系统时间

ftime() 函数,这个函数是取系统的时间,精确到毫秒级别,这个函数在windows 和linux 下都可用。所以我暂时是比较喜欢它的。

这个函数返回一个结构体,结构体中两个成员,其中time 成员,与函数 time(NULL) 返回的是等同的,用它可以配合localtime mktime ctime 等时间函数作相应的时间操作。

 1 #include <stdio.h>
 2 #include <sys/timeb.h>
 3
 4 void main_tick(time_t cur_sec)
 5 {
 6
 7 }
 8
 9 int main()
10 {
11     int msec_per_tick = 20;    // 每一个TICK 的毫秒值
12
13     struct timeb s_tp_cur = {0, 0};
14     struct timeb s_tp_fin = {0, 0};
15     int next_millitm = 0;    // 当前时间经验一个tick 之后的毫秒值,在未进位到秒上前
16     int surplus_msec = 0;    // 剩余tick 毫秒值: > 0 代表需要休眠
17     ftime(&s_tp_cur);
18     s_tp_fin = s_tp_cur;
19
20     int count = 50;
21     while (count-- >= 0)
22     {
23         //< 主tick 开始
24         main_tick(s_tp_cur.time);
25         //< 主tick 结束
26
27         ftime(&s_tp_cur);
28
29         surplus_msec = (int)(s_tp_fin.time - s_tp_cur.time) * 1000
30             + (s_tp_fin.millitm - s_tp_cur.millitm);
31 #if defined OS_WINDOWS
32         printf("beg: %lld.%d, end: %lld.%d, surplus_msec = %d\n",
33             s_tp_cur.time, s_tp_cur.millitm,
34             s_tp_fin.time, s_tp_fin.millitm,
35             surplus_msec);
36 #elif defined OS_LINUX
37         printf("beg: %ld.%d, end: %ld.%d, surplus_msec = %d\n",
38             s_tp_cur.time, s_tp_cur.millitm,
39             s_tp_fin.time, s_tp_fin.millitm,
40             surplus_msec);
41 #endif
42
43         if (surplus_msec > 0)
44         {
45             printf("Sleep(%d)\n", surplus_msec);
46             next_millitm = s_tp_cur.millitm + msec_per_tick + surplus_msec;
47 #if defined OS_WINDOWS
48             Sleep(surplus_msec);
49 #elif defined OS_LINUX
50             usleep(surplus_msec * 1000);
51 #endif
52         }
53         else
54         {
55             next_millitm = s_tp_cur.millitm + msec_per_tick;
56         }
57
58         // 计算tick 时间到的end 值
59         s_tp_fin.time    = s_tp_cur.time + next_millitm / 1000;
60         s_tp_fin.millitm = next_millitm % 1000;
61     };
62
63     return 0;
64 }
时间: 2024-10-13 22:39:37

ftime() 系统时间的相关文章

系统时间错误导致make命令实际在循环执行configure命令

特征屏幕轮番出现checking的字符基本可以确定系统时间是有问题: checking for --enable-universalsdk... no  checking for --with-universal-archs... 32-bit  checking MACHDEP... linux2  checking EXTRAPLATDIR...   checking machine type as reported by uname -m... i686  checking for --w

C语言中的系统时间结构体类型

在C语言涉及中经常需要定时触发事件,涉及到获取系统时间,其结构体类型有多种.Unix/Linux系统下有以下几种时间结构: 1.time_t 类型:长整型,一般用来表示从1970-01-01 00:00:00时以来的秒数,精确度:秒:由函数time()获取: 该类型定义在头文件 /usr/include/sys/time.h 中: #define _TIME_T       typedef   long   time_t;             #endif 函数定义:time_t   tim

linux 修改服务器系统时间

前言 因项目需求需要修改统一系统时间 详情配置如下: 在CentOS 7里面有一个命令timedatectl可以帮助我们修改服务器的时区. 1. 查看服务器里的时间设置 timedatectl ,它等同于 timedatectl status : 2. 了解 timedatectl 命令的各个参数: 3. 设置时间 下面看下CentOS修改服务器系统时间 linux安装完毕后,一般都是国外的世界,一点都不方便设置任务,或者导致网站获取本地的时间错乱,所以就需要把服务器的时间改为和本地时间一致,也

自动调整linux系统时间和时区与Internet时间同步

调整linux系统时间和时区与Internet时间同步 一.修改时区:# cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime修改为中国的东八区# vi /etc/sysconfig/clockZONE="Asia/Shanghai"UTC=falseARC=false 二.配置新的时间日期设定:# date -s 2008/05/06 时间设定:# date -s 18:40:00 查看硬件时间(BIOS的):    hwclock

Linux系统时间管理

一.时区配置 显示时区 [[email protected] ~]# date -R Mon, 19 Dec 2016 14:02:47 +0800 [[email protected] ~]# [[email protected] ~]# date +%z +0800 [[email protected] ~]# 主要就是后面的+0800,东八区 修改时区 [[email protected] ~]# vim /etc/sysconfig/clock [[email protected] ~]

linux小知识之查看系统时间

有个朋友想查看服务器一天的网卡流量,但是没有安装cacti.所以我推荐他使用ifconfig查看下网卡流量,然后看下系统运行时间,除出来参考一下.他居然问我系统时间怎么查看.好吧,那我就写篇文章记录下怎么查看系统时间 方法一: who命令, -r runlevel     -b boot [[email protected] ~]# who -r 运行级别 3 2016-11-03 10:32 [[email protected] ~]# who -b 系统引导 2016-11-03 10:32

java中获取当前系统时间,并与字符串相互转换格式,或者转化成秒数,天数等整数

转换成秒数 Date类有一个getTime()可以换回秒数,例如: public class DateToSecond { public static void main(String[] args) { Date date = new Date(System.currentTimeMillis()); System.out.println(date.getTime()); } } 与字符串格式相互转换 一. 获取当前系统时间和日期并格式化输出: import java.util.Date; i

查看和修改系统时间

Echo -n 不换行显示 echo -e不转义 Date '+%Y-%m-%d 查看当前时间   date-s '2017/09/04'表示修改时间 %w表示周   %H:%M:%S时分秒 +%F=+%Y-%m-%d  %T=%H:%M:%S $()=反引号 hwclock将修改后的系统时间写到bios里 Date +%F -d '-3 day'三天前 -一定要 Date +%F -d '+3 day'三天以后 +可以不要 Date +%H -d '-3 hour'3小时以前 Sed '/^$

linux中显示/设置系统时间

date   显示/设置 系统时间 +某个格式 以某种格式显示日期 格式: +%F  2017-08-20  ====== +%Y-%m-%d +%w 显示周几  0 周日  1-6 周一到周六 +%T  时:分:秒     ====== +%H:%M:%S -d  按照你的描述显示日期 -d "1day"    1天之后  ==== +1day -d "-1day"   1天之前 -s修改系统的时间 1.1 修改系统时间的命令 ntpdatepool.ntp.or