C语言时间函数积累(一)
用法:time_t time(time_t *t)
功能:此函数返回从公元197011日的UTC时间从000秒算起到现在所经过的秒数。如果t并非空指针,此函数也会将返回值存到t指针所指的内存。
返回值:成功,返回秒数,失败则返回((time_t)-1)值,错误原因存于errno中。
程序例:
#include<stdio.h>
#include<time.h>
void main()
{
    int seconds= time((time_t*)NULL);
    printf("%d\n",seconds);
}
localtime
: struct tm *localtime(const time_t *clock);
: localtime()将参数clock所指的time_t结构中的信息转换成真实世界所使用的时间日期表示方法,然后将结果由结构tm返回。结构tm的定义请参考gmtime()。此函数返回的时间日期已经转换成当地时区。
程序例:
#include<time.h>
main()
{
    char *wday[]={"Sun","Mon","Tue","Wed","Thu","Fri","Sat"};
    time_t timep;
    struct tm *p;
    time(&timep);
    p=localtime(&timep); /*取得当地时间*/
    printf ("%d/%d/%d ", (1900+p->tm_year),(1+p->tm_mon), p->tm_mday);
    printf("%s %d:%d:%d\n", wday[p->tm_wday],p->tm_hour, p->tm_min, p->tm_sec);
}
在标准C/C++中,我们可通过tm结构来获得日期和时间,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;    /* 月份(从一月开始,trunc函数使用时间0代表一月) - 取值区间为[0,11] */
        int tm_year;    /* 年份,其值等于实际年份减去1900 */
        int tm_wday;    /* 星期取值区间为[0,6],其中0代表星期天,1代表星期一,       以此类推 */
        int tm_yday;    /* 从每年的11日开始的天数取值区间为[0,365],其中0代表11日,
1代表12日,以此类推 */
        int tm_isdst;  /* 夏令时标识符,实行夏令时的时候,tm_isdst为正。不实行夏令时的进候,tm_isdst0;不了解情况时,tm_isdst()为负。*/
};
#define _TM_DEFINED
#endif
asctime
  : char *asctime(const struct tm *tblock);
  : asctime()将参数tblock所指的tm结构中的信息转换成真实世界所使用的时间日期表示方法,然后将结果以字符串形态返回。此函数已经由时区转换成当地时间,字符串格式为:Wed Jun 30 21:49:08 1993
程序例:
#include <stdio.h>
#include <string.h>
#include <time.h>
int main(void)
{
  struct tm t;
  char str[80];
  /* sample loading of tm structure  */
  t.tm_sec    = 1;  /* Seconds */
  t.tm_min    = 30; /* Minutes */
  t.tm_hour  = 9;  /* Hour */
  t.tm_mday  = 22; /* Day of the Month  */
  t.tm_mon    = 11; /* Month (0-11)*/
  t.tm_year  = 56; /* Year - does not include century */
  t.tm_wday  = 4;  /* Day of the week  */
  t.tm_yday  = 0;  /* Does not show in asctime  */
  t.tm_isdst  = 0;  /* Is Daylight SavTime; does not show in asctime */
  /* converts structure to null terminated
  string */
  strcpy(str, asctime(&t));
  printf("%s\n", str);
  return 0;
}

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。