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);
}


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

相关文章推荐

Unix/Linux环境C编程入门教程(28) 日期时间那些事儿

记得这个专题第一篇我们写过一个程序运行时间的程序,采用库函数提供的clock()模拟做程序测试。本篇介绍的函数也是和时间相关,但是没有clock的细致,而是提供的系统时间和日期。 1. as...

Linux编程---时间相关

时间相关的东西很难分类.所以我就写一篇好了.   一.系统时间 1.time函数 time_t time(time_t *tloc); double difftime(time_t time1,tim...

MySQL时间日期查询相关函数与方法

MySQL应用中,日期与查询是非常普遍的。比如要查某天、某个星期、或者某个月内的数据,查询两个日期之间的天数差,查询某天是星期几等等。下面就介绍一下相关的MySQL时间与日期函数,与它们的具体使用方法...

JAVA处理日期(Date)时间(Time)以及相关类的介绍

JAVA处理日期时间常用方法:1.    java.util.CalendarCalendar 类是一个抽象类,它为特定瞬间与一组诸如 YEAR、MONTH、DAY_OF_MONTH、HOUR 等 日...

java中日期和时间相关类(包括java8中新增java.time包)

一.ava8之前的日期时间相关类 1.java8之前所有日期时间相关类图(箭头的意思是:父类—->子类)(具体方法见API) 2.Date类 (1)标准java类库中包含一个Date类,它的对象...

PHP日期与时间相关的函数

PHP日期和时间 1.验证日期。 checkdate()如果提供的日期有效,返回TRUE,否则返回FALSE。 bool bheckdate(int month,int day,int...

Android开发总结笔记 Date&Time(时间日期相关组件) 1-1-16

安卓系统中提供的和日期时间相关的组件有以下几个 TextClock           文本时钟AnalogClock(API 23已被弃用,不分析)      模拟时钟Chronomete...

【VBA研究】VBA中日期和时间相关的计算

作者:iamlaosong 1、日期转换 很简单,直接用转换函数就可以了,例如:CDate("2012-12-31") 2、日期之间的天数 用datediff函数,注意,工作表单元格中用的函数名称是d...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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