用c语言如何获取系统当前时间的函数?

Python011

用c语言如何获取系统当前时间的函数?,第1张

1、C语言中读取系统时间函数为time(),其函数原型为:\x0d\x0a#include \x0d\x0atime_t time( time_t * ) \x0d\x0atime_t就是long,函数返回从1970年1月1日(MFC是1899年12月31日)0时0分0秒,到现在的的秒数。\x0d\x0a2、C语言还提供了将秒数转换成相应的时间格式的函数:\x0d\x0achar * ctime(const time_t *timer)//将日历时间转换成本地时间,返回转换后的字符串指针 可定义字符串或是字符指针来接收返回值\x0d\x0astruct tm * gmtime(const time_t *timer)//将日历时间转化为世界标准时间(即格林尼治时间),返回结构体指针 可定义struct tm *变量来接收结果\x0d\x0astruct tm * localtime(const time_t * timer) //将日历时间转化为本地时间,返回结构体指针 可定义struct tm *变量来接收结果\x0d\x0a3、例程:\x0d\x0a#include \x0d\x0avoid main()\x0d\x0a{\x0d\x0atime_t t\x0d\x0astruct tm *pt \x0d\x0achar *pc \x0d\x0atime(&t)\x0d\x0apc=ctime(&t) printf("ctime:%s", pc )\x0d\x0apt=localtime(&t) printf("year=%d", pt->tm_year+1900 )\x0d\x0a}\x0d\x0a\x0d\x0a时间结构体struct tm 说明:\x0d\x0a\x0d\x0astruct tm { \x0d\x0aint tm_sec/* 秒 _ 取值区间为[0,59] */ \x0d\x0aint tm_min/* 分 - 取值区间为[0,59] */ \x0d\x0aint tm_hour/* 时 - 取值区间为[0,23] */ \x0d\x0aint tm_mday/* 一个月中的日期 - 取值区间为[1,31] */ \x0d\x0aint tm_mon/* 月份(从一月开始,0代表一月) - 取值区间为[0,11] */ \x0d\x0aint tm_year/* 年份,其值等于实际年份减去1900 */ \x0d\x0aint tm_wday/* 星期 _ 取值区间为[0,6],其中0代表星期天,1代表星期一,以此类推 */ \x0d\x0aint tm_yday/* 从每年的1月1日开始的天数 _ 取值区间为[0,365],其中0代表1月1日,1代表1月2日,以此类推 */ \x0d\x0aint tm_isdst/* 夏令时标识符,实行夏令时的时候,tm_isdst为正。不实行夏令时的进候,tm_isdst为0;不了解情况时,tm_isdst()为负。*/ \x0d\x0a}

需要利用C语言的时间函数time和localtime,具体说明如下:

一、函数接口介绍:

1、time函数。

形式为time_t time (time_t *__timer)

其中time_t为time.h定义的结构体,一般为长整型。

这个函数会获取当前时间,并返回。 如果参数__timer非空,会存储相同值到__timer指向的内存中。

time函数返回的为unix时间戳,即从1970年1月1日(UTC/GMT的午夜)开始所经过的秒数,不考虑闰秒。

由于是秒作为单位的,所以这并不是习惯上的时间,要转为习惯上的年月日时间形式就需要另外一个函数了。

2、localtime函数。

形式为struct tm *localtime (const time_t *__timer);

其中tm为一个结构体,包含了年月日时分秒等信息。

这种结构是适合用来输出的。

二、参考代码:

#include <stdio.h>

#include <time.h>

int main ()

{

    time_t t

    struct tm * lt

    time (&t)//获取Unix时间戳。

    lt = localtime (&t)//转为时间结构。

    printf ( "%d/%d/%d %d:%d:%d\n",lt->tm_year+1900, lt->tm_mon, lt->tm_mday, lt->tm_hour, lt->tm_min, lt->tm_sec)//输出结果

    return 0

}

注意事项:

struct tm中的tm_year 值为实际年减去1900, 所以输出的时候要是lt->tm_year+1900。