花之剑'HOME

一朵飘舞在风中的雪花,挣扎着,不想被融化。

C语言中tm结构体

Posted on 2008-01-22 20:15 花之剑 阅读(17147) 评论(2)  编辑  收藏 所属分类: linuxc/c++ & algorithm

struct 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;                 /* DST.         [-1/0/1]*/

#ifdef  __USE_BSD
  long int tm_gmtoff;           /* Seconds east of UTC.  */
  __const char *tm_zone;        /* Timezone abbreviation.  */
#else
  long int __tm_gmtoff;         /* Seconds east of UTC.  */
  __const char *__tm_zone;      /* Timezone abbreviation.  */
#endif
};

在C语言中
有time_t tm timeval等几种类型的时间
1.time_t为typedef __int64 __time64_t;
2.struct timeval
{
      uint tv_sec;
      uint tv.usec;
}



具体操作函数
包含文件:<sys/time.h> <time.h>

tm *gmtime(time_t * t);
time_t time(time_t *t);
char *asctime(const struct tm *timeptr);
char *ctime(const time_t *timer); 
把tm指针转换为time_t
time_t mktime(struct tm *timeptr);
localtime和gmtime的区别在于gmtime将时间转换为国际标准格式,也就是相对于1970 00:00:00开始的时间戳
而localtime是相对于本地的时区的格式。
#include<stdio.h>
#include<time.h>
#include<sys/time.h>
#include<signal.h>
#include<pthread.h>
void quit_t()
{
        printf("eixt now");
        exit(-1);
}
int main()
{
/*      struct timeval  vt;
        gettimeofday(&vt , NULL);
        while(1)
        {
                printf("%u:%u\n",vt.tv_sec,vt.tv_usec);
                sleep(2);
                signal(SIGINT, quit_t);
        }
*/

        struct tm *tt;
        time_t t = time(NULL);
        tt = gmtime(&t);
        //char *s = asctime(tt);
        printf("%d-%d-%d %d:%d:%d",tt->tm_year+1900,tt->tm_mon+1,tt->tm_mday,tt->tm_hour,tt->tm_min,tt->tm_sec);
        return 0;
}

Feedback

# re: C语言中tm结构体  回复  更多评论   

2010-03-11 20:19 by C语言
#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()为负。*/
};
#define _TM_DEFINED /* 避免重复定义 tm */
#endif
ANSI C标准称使用tm结构的这种时间表示为分解时间(broken-down time)。
包含文件:<sys/time.h> <time.h>
把tm指针转换为time_t: time_t mktime(struct tm *timeptr);

转载自:嵌入式在线 http://www.embedol.com/c/1062.html

# re: C语言中tm结构体  回复  更多评论   

2015-05-08 21:38 by 思维殿堂
c语言结构体
http://www.alex999.com/c_language_structure.html

只有注册用户登录后才能发表评论。


网站导航: