C程序输出系统当前时间

需要利用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为一个结构体,包含了年月日时分秒等信息。

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

二、参考代码:

1
2
3
4
5
6
7
8
9
10
11
#include 
#include 
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

OR

C库中与系统时间相关的函数定义在头文件中, C++定义在头文件中。
一、time(time_t*)函数
函数定义如下:
time_t time (time_t* timer);
获取系统当前日历时间 UTC 1970-01-01 00:00:00开始的unix时间戳
参数:timer 存取结果的时间指针变量,类型为time_t,指针变量可以为null。如果timer指针非null,则time()函数返回值变量与timer指针一样,都指向同一个内存地址;否则如果timer指针为null,则time()函数返回一个time_t变量时间。
返回值,如果成功,获取当前系统日历时间,否则返回 -1。

二、结构体 struct tm
变量 类型 说明 范围
tm_sec int 每分钟的秒数 [0 - 61]
tm_min int 每小时后面的分钟数 [0 - 59]
tm_hour int 凌晨开始的小时数 [0 - 23]
tm_mday int 从每月份开始算的天数 [1 - 31]
tm_mon int 从一月份开始的月份数 [0 - 11]
tm_year int 从1900年开始的年数  
tm_wday int 从每周天开始算的天数 [0 - 6]
tm_yday int 一年的第几天,从零开始 [0 - 365]
tm_isdst int 夏令时  
       
这里有几个地方要注意:
1. tm_sec 在C89的范围是[0-61],在C99更正为[0-60]。通常范围是[0-59],只是某些系统会出现60秒的跳跃。
2. tm_mon 是从零开始的,所以一月份为0,十二月份为11。

三、本地时间转换函数localtime(time_t*)
函数原型
struct tm * localtime (const time_t * timer);
将日历时间转换为本地时间,从1970年起始的时间戳转换为1900年起始的时间数据结构

四、源码及编译

current_time.cpp

[cpp]  view plain  copy
  1. #include   
  2. #include   
  3.   
  4. int main(int argc, char* argv[]) {  
  5.     time_t rawtime;  
  6.     struct tm *ptminfo;  
  7.   
  8.     time(&rawtime);  
  9.     ptminfo = localtime(&rawtime);  
  10.     printf("current: %02d-%02d-%02d %02d:%02d:%02d\n",  
  11.             ptminfo->tm_year + 1900, ptminfo->tm_mon + 1, ptminfo->tm_mday,  
  12.             ptminfo->tm_hour, ptminfo->tm_min, ptminfo->tm_sec);  
  13.     return 0;  
  14. }  


编译及运行

$ g++ current_time.cpp

$ ./a.out

current: 2017-07-26 23:32:46


你可能感兴趣的:(C程序输出系统当前时间)