时间处理

ref: http://www.cnblogs.com/xmphoenix/archive/2011/05/09/2041546.html

#include <unistd.h> //sleep() 秒 usleep()微妙

#include <time.h>

/*

int nanosleep(const struct timespec *req, struct timespec *rem);

struct timespec
              {
                      time_t  tv_sec;         /* seconds */
                      long    tv_nsec;        /* nanoseconds */
              };

这个函数功能是暂停某个进程直到你规定的时间后恢复,参数req就是你要暂停的时间,其中req->tv_sec是以秒为单位,而tv_nsec以毫微秒为单位(10的-9次方秒)。

由于调用nanosleep是是进程进入TASK_INTERRUPTIBLE,这种状态是会相应信号而进入TASK_RUNNING状态的,

这就意味着有可能会没有等到你规定的时间就因为其它信号而唤醒,此时函数返回-1,切还剩余的时间会被记录在rem中。

*/

#include <sys/time.h>

/*

int gettimeofday(struct timeval*tv, struct timezone *tz);

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

struct timezone{

int tz_minuteswest;/*格林威治时间往西方的时差*/

int tz_dsttime;/*DST 时间的修正方式*/

}

timezone 参数若不使用则传入NULL即可。

而结构体timeval的定义为:

struct timeval{

long int tv_sec; // 秒数

long int tv_usec; // 微秒数

}

*/

计算时间差值

int timeval_subtract(struct timeval* result, struct timeval* x, struct timeval* y)
{
    int nsec;

    if ( x->tv_sec>y->tv_sec )
        return -1;

    if ( (x->tv_sec==y->tv_sec) && (x->tv_usec>y->tv_usec) )
        return -1;

    result->tv_sec = ( y->tv_sec-x->tv_sec );
    result->tv_usec = ( y->tv_usec-x->tv_usec );

    if (result->tv_usec<0)
    {
        result->tv_sec--;
        result->tv_usec+=1000000;
    }

    return 0;
}

struct timeval start,stop,diff;
gettimeofday(&start,0);
printf( "CAPABILITY_1_SECS_%010u_USEC_%010u\n", start.tv_sec, start.tv_usec );

gettimeofday(&stop,0);
printf( "CAPABILITY_2_SECS_%010u_USEC_%010u\n", stop.tv_sec, stop.tv_usec );

timeval_subtract(&diff,&start,&stop);
printf( "CAPABILITY_3_SECS_%010u_USEC_%010u\n", diff.tv_sec, diff.tv_usec );
时间: 2024-11-04 23:33:24

时间处理的相关文章

js中获取时间new date()的用法

js中获取时间new date()的用法 获取时间:   var myDate = new Date();//获取系统当前时间 获取特定格式的时间: 1 myDate.getYear(); //获取当前年份(2位) 2 myDate.getFullYear(); //获取完整的年份(4位,1970-????) 3 myDate.getMonth(); //获取当前月份(0-11,0代表1月) 4 myDate.getDate(); //获取当前日(1-31) 5 myDate.getDay();

win7搭建局域网时间服务器

近日,本人想在局域网内通过普通的windows 7 PC搭建一台NTP服务器,可看似简单的配置却给我捣腾了了半天.初期,参考了互联网的上相关的配置文档,可网络设备就是死活不同步NTP服务器的时间.实在没办法,只有通过来抓包分析了,经过一番研究后,终于找到问题,现将这个文档与大家分享: 通过windows系统为局域网搭建NTP服务器,为局域网内网络设备提供时间服务,经过测试,使用于windows xp.windows 2003.windows 7. 1.启用 NTPServer.为此,请按照下列步

java 判断两个时间相差的天数!

package com.datedaycha;     import java.text.SimpleDateFormat;     import java.util.Calendar;     import java.util.Date;     import com.sun.org.apache.xerces.internal.impl.xpath.regex.ParseException;     /*      * java 判断两个时间相差的天数     1.实现目标     输入:两

Linux使用find查找最后修改时间超过三天的文件并移动到指定目录

使用场景:应用程序,如tomcat,每天都会生成新的日志文件,时间一长,占用大量的磁盘,需要定期清理这些文件. 代码如下: find /tomcat/logs/*.log -ctime +3 -exec mv {} /tmp 也可以使用xargs传参数 find /tomcat/logs/*.log -ctime +3 | xargs mv {} /tmp 说明:将指定目录下超过3天未修改的日志文件移动到tmp中. 如果要直接删除,将命令改为如下即可: find /tomcat/logs/*.l

linux命令更改服务器时间

1. linux更改服务器时间: 权限:root用户才有权限更改服务器时间 使用date命令即可设置系统时间. 2. 查看系统时间 date 3. 设置当前系统时间为2015年5月8日19点48分0秒 date -s "2015-05-08 19:48:0"

测试程序运行的时间

---恢复内容开始--- 运行一个小的程序要多久的时间呢,这就要用一个小小的程序运行的结果试验一下: 下面是一个小的代码: #首先要引用时间 import time t = time.clock() result = ("select * from 表A") e = time.clock() #这打印的是运行这个命令用的是多长时间 print(t-e) print(result) 就是这么的简单

【阅读】4个月晚上时间+周末,断断续续看完了Thinking in java 第四版,你们的感觉和我一样吗?

我运行了每一个例子,整本书勾勾画画,以备第二遍归纳重点到云笔记上,我已经尽心的细读.不放过任何一个疑问点.哪怕实在无法理解的句子(变味的翻译),我都折上角,以便二次扫荡.说实话,看完还是很有成就感的. 但是, 读后感:像一场噩梦! 恐怖的泛型部分,令人痛苦的例子,变味的中文翻译,冗长的描述. 真的很痛苦,泛型部分和多线程部分,耗费了我不少的时间.

linux 修改服务器系统时间

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

linux中常用时间和字符串之间相互转化

在Linux中经常会遇到时间和字符串相互转化的情形,有两个函数专门对应相应的转化. 1.时间转字符串函数strftime 函数原型:size_t strftime(char *s,size_t maxsize,char *format,conststruct tm *timeptr) strftime函数对timeptr指向的tm结构所代表的时间和日期进行格式编排,其结果放在字符串s中.该字符串的长度被设置为(最少)maxsize个字符.格式字符串format用来对写入字符串的字符进行控制,它包

Java日期时间(Date/Time)

获取当前日期和时间 在Java中容易得到当前的日期和时间.可以使用一个简单的Date对象的toString()方法,如下所示打印当前日期和时间: import java.util.Date; public class DateDemo { public static void main(String args[]) { // Instantiate a Date object Date date = new Date(); // display time and date using toStr