Linux 时间和日期相关编程

原创 2012年03月30日 11:59:25

所有的unix系统都使用同一个时间和日期的起点:格林尼治时间(GMT)1970年1月1日午夜0点

时间通过一个预定义的类型time_t来处理,在linux系统中,它是一个长整型。包含在time.h中。

#include<time.h>

time_t time(time_t *tloc);

通过time函数可以得到底层的时间值,它返回的是从纪元开始至今的秒数。如果tloc不是一个空指针,time函数还会把返回值写入到tloc指针指向的位置。

#include <time.h>
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>

int main()
{
    int i;
    time_t the_time;

    for(i = 1; i <= 10; i++) {
        the_time = time((time_t *)0);
        printf("The time is %ld\n", the_time);
        sleep(2);
    }
    exit(0);
}

#include<time.h>

double difftime(time_t time1,time_t time2);

difftime函数是计算两个时间值之间的差,并将time1-time2的值作为浮点数返回。


为了提供更有意义的时间和日期,你需要把时间值转换为可读的时间和日期,有一些标准函数可以做到这些。

#include<time.h>

struct tm *gmtime(const time_t timeval);

tm结构被定义为下面所示的成员

int tm_sec;                   /* Seconds.     [0-60] (1 leap second) */

int tm_min;                   /* Minutes.     [0-59] */

int tm_hour;                  /* Hours.       [0-23] */

int tm_mday;                  /* Day.         [1-31] */

int tm_mon;                   /* Month.       [0-11] */

int tm_year;                  /* Year - 1900. */

int tm_wday;                  /* Day of week. [0-6] */

int tm_yday;                  /* Days in year.[0-365] */

int tm_isdst;                 /* 是否夏令时*/

下面这个gmtime.c利用tm结构gmtime打印当前的时间和日期

#include <time.h>
#include <stdio.h>
#include <stdlib.h>

int main()
{
    struct tm *tm_ptr;
    time_t the_time;

    (void) time(&the_time);
    tm_ptr = gmtime(&the_time);

    printf("Raw time is %ld\n", the_time);
    printf("gmtime gives:\n");
    printf("date: %02d/%02d/%02d\n", 
        tm_ptr->tm_year, tm_ptr->tm_mon+1, tm_ptr->tm_mday);
    printf("time: %02d:%02d:%02d\n",
        tm_ptr->tm_hour, tm_ptr->tm_min, tm_ptr->tm_sec);
    exit(0);
}


要查看本地的时间,你需要使用localtime函数

#include<time.h>

struct tm *localtime(const time_t *timaval);


要把已分解出来的tm结构再转换为原始的time_t时间值,你可以使用mktime函数:

#include<time.h>

time_t mktime(struct tm *timeptr);

如果结构tm结构不能表示time_t的值,mktime但会-1


为了得到更友好的时间和日期,像date命令输出那样。你可以使用asctime函数和ctime函数。

#include<time.h>

char *asctime(const struct tm *timeptr);

char *ctime(struct time_t *timeval);

#include <time.h>
#include <stdio.h>
#include <stdlib.h>

int main()
{
    time_t timeval;

    (void)time(&timeval);
    printf("The date is: %s", ctime(&timeval));
    exit(0);
}


版权声明:本文为博主原创文章,未经博主允许不得转载。

mysql时间相关函数总结

时间戳: 时间戳是指格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总秒数。 mysql中指的日期、时间: 就是一个标准格式的日期、时...
  • u012922219
  • u012922219
  • 2016年06月23日 14:12
  • 197

linux 下修改日期和时间

 我们一般使用“date -s”命令来修改系统时间。比如将系统时间设定成2009年11月13日的命令如下。 #date -s 11/13/09 将系统时间设定成下午1点12分0秒的命令如下。#date...
  • tianlesoftware
  • tianlesoftware
  • 2009年11月13日 16:48
  • 19816

日期和时间编程

printf( "Time to do %ld empty loops is ", i );   start = clock();   while( i-- )      ;   finish = c...
  • Laiger001
  • Laiger001
  • 2010年04月23日 17:09
  • 774

Linux编程---时间相关

时间相关的东西很难分类.所以我就写一篇好了.   一.系统时间 1.time函数 time_t time(time_t *tloc); double difftime(time_t time1,tim...
  • meiboyu
  • meiboyu
  • 2014年06月18日 21:56
  • 657

Linux 下的时间编程总结

Linux 时间函数详解,时间显示,时间函数安全用法,定时器等
  • sin0803
  • sin0803
  • 2014年07月15日 10:27
  • 844

Linux shell 日期,时间相关的命令

在shell开发中,经常要用到跟获取日期相关的东西,这里记录一下Linux shell 获取日期的方法 获取当前日期:today=`date +"%Y-%m-%d"` 获取昨天的日期:yesterda...
  • miss_longlong
  • miss_longlong
  • 2017年06月06日 11:31
  • 2223

Unix/Linux编程-时间和日期

时间和日期 有Unix内核提供的基本时间服务是计算自协调世界时(UTC)公元1970年1月1日00:00:00这一特定时间以来经过的秒数。以数据类型time_t表示。 #include t...
  • water_3700348
  • water_3700348
  • 2017年10月24日 16:17
  • 39

linux基本操作---shell脚本-变量、表达式、日期

Linux shell解释型脚本语言直接调用linux命令Shell 脚本执行的两种方式 sh 脚本文件 ./脚本文件 ,需要脚本文件有执行权限 [root@localhost test]# ./t...
  • zhangshk_
  • zhangshk_
  • 2017年12月12日 23:58
  • 162

修改linux时间和日期——date和clock

[root@localhost ~]# date -s 17:08:50 设置linux系统时间。 [root@localhost ~]# clock -w 设置CMOS时间。强制把系统时间...
  • ztguang
  • ztguang
  • 2016年02月01日 00:00
  • 1626

LINUX 时间和日期

时间和日期通常能确定时间和日期对一个程序来说是非常有用的。程序可能希望记录它运行的时间,或者可能需要在某些时候改变它的运行方式。例如,一个游戏可能拒绝在工作时间运行,或者一个定时备份程序可能想等到每天...
  • zkx1982
  • zkx1982
  • 2007年12月21日 11:02
  • 1642
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Linux 时间和日期相关编程
举报原因:
原因补充:

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