time 函数

方法一,#include<time.h>

int main()

{

time_t timep;

struct tm *p;

time (&timep);

p=gmtime(&timep);

printf("%d\n",p->tm_sec); /*获取当前秒*/

printf("%d\n",p->tm_min); /*获取当前分*/

printf("%d\n",8+p->tm_hour);/*获取当前时,这里获取西方的时间,刚好相差八个小时*/

printf("%d\n",p->tm_mday);/*获取当前月份日数,范围是1-31*/

printf("%d\n",1+p->tm_mon);/*获取当前月份,范围是0-11,所以要加1*/

printf("%d\n",1900+p->tm_year);/*获取当前年份,从1900开始,所以要加1900*/

printf("%d\n",p->tm_yday); /*从今年1月1日算起至今的天数,范围为0-365*/

}

方法二.#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;}

扩展资料

1、CTimeSpan类

如果想计算两段时间的差值,可以使用CTimeSpan类,具体使用方法如下:

CTime t1( 1999, 3, 19, 22, 15, 0 );

CTime t = CTime::GetCurrentTime();

CTimeSpan span=t-t1; //计算当前系统时间与时间t1的间隔

int iDay=span.GetDays(); //获取这段时间间隔共有多少天

int iHour=span.GetTotalHours(); //获取总共有多少小时

int iMin=span.GetTotalMinutes();//获取总共有多少分钟

int iSec=span.GetTotalSeconds();//获取总共有多少秒

2、timeb()函数

_timeb定义在SYS\TIMEB.H,有四个fields

dstflag

millitm

time

timezone

void _ftime( struct _timeb *timeptr );

struct _timeb timebuffer;

_ftime( &timebuffer );

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

int main()
{
    time_t rawtime;  //时间类型,由time.h中定义
    struct tm *timeinfo;  //关于时间的结构体类型,在time.h中定义
    timeinfo = (struct tm*)malloc(sizeof(struct tm));
    time(&rawtime);  //获取时间,以秒计,从1970年1月1日00:00:00起算,存于rawtime
    timeinfo = localtime(&rawtime);  //转换为当地时间,存在结构体 struct tm中
    return 0;
}
1.struct tm 时间结构的详细说明,在time.h 定义如下:
#ifndef _TM_DEFINED

  struct tm {

  int tm_sec; /* 秒–取值区间为[0,59] */

  int tm_min; /* 分 - 取值区间为[0,59] */

  int tm_hour; /* 时 - 取值区间为[0,23] */

  int tm_mday; /* 一个月中的日期 - 取值区间为[1,31] */

  int tm_mon; /* 月份(从一月开始,0代表一月) - 取值区间为[0,11] */

  int tm_year; /* 年份,其值从1900开始 */

  int tm_wday; /* 星期–取值区间为[0,6],其中0代表星期天,1代表星期一,以此类推 */

  int tm_yday; /* 从每年的1月1日开始的天数–取值区间为[0,365],其中0代表1月1日,1代表1月2日,以此类推 */

  int tm_isdst; /* 夏令时标识符,实行夏令时的时候,tm_isdst为正。不实行夏令时的进候,tm_isdst为0;不了解情况时,tm_isdst()为负。*/

  long int tm_gmtoff; /*指定了日期变更线东面时区中UTC东部时区正秒数或UTC西部时区的负秒数*/

  const char *tm_zone; /*当前时区的名字(与环境变量TZ有关)*/

  };

  #define _TM_DEFINED

  #endif

  //ANSI C标准称使用tm结构的这种时间表示为分解时间(broken-down time)。

如果要以自定义的输出格式输出,可以直接操纵struct tm类型中的数据,但要注意的是:

struct tm中的年份要加1900,即timeinfo->tm_year + 1900,因为系统中的时间是从1900年算起的。

struct tm中的月份要加1,即timeinfo->tm_mon + 1,因为月份的计数是从0开始的

 

3.有个问题在于,使用struct tm的指针时,并没有为这个结构体分配空间,而只是为一个指向这个结构体的指针分配了栈空间。这样容易导致在内存中野蛮地占  用其他有用的数据空间。所以,我的想法是,最好加上一句:

timeinfo = (struct tm *)malloc(sizeof(struct tm));

原文链接
用c语言如何获取系统当前时间的函数?_百度知道 (baidu.com)



全部评论

相关推荐

Noob1024:一笔传三代,人走笔还在
点赞 评论 收藏
分享
我是小红是我:学校换成中南
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务