c语言时间函数

#include<time.h>

1.获得日历时间

  • time_t
实际上是长整型,从一个时间点(一般是1970年1月1日0时0分0秒)到此时的秒数
time_t的值由函数time()获得
time_t time(time_t* timer);
eg:time_t t=time( NULL);

2.获得日期和时间

  • struct tm
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()为负。*/
          };

struct tm的值由函数localtime( )和gmtime( )获得

struct tm * localtime(const time_t* timer);//将日历时间转化为本地时间
struct tm * gmtime(const time_t*timer); //将日历时间转化为格林尼治标准时间(Greenwich Mean Time)</span>

eg:struct tm *tm=localtime(&t);
eg:struct tm *tm=gmtime(&t);

#include<stdio.h>
#include<time.h>
int main()
{
	time_t t;
	struct tm *localtm;
	struct tm *gmtm;
	t=time(NULL);
	localtm=localtime(&t);//参数为指向time_t的指针,返回值为指向tm的指针localtm
	gmtm=gmtime(&t);//参数为指向time_t的指针,返回值为指向tm的指针gmtm</span>
	printf("The calendar time is:%ld\n",t);
	printf("The Local time is:%d-%d-%d %d:%d:%d\n",1900+localtm->tm_year,localtm->tm_mon,localtm->tm_mday,localtm->tm_hour,localtm->tm_min,localtm->tm_sec);
	printf("The Greenwich Mean time is:%d-%d-%d %d:%d:%d\n",1900+gmtm->tm_year,gmtm->tm_mon,gmtm->tm_mday,gmtm->tm_hour,gmtm->tm_min,gmtm->tm_sec);
	return 0;
}


3.固定时间格式

char * asctime(const struct tm * timeptr);//将日期时间转化为固定时间格式
char * ctime(const time_t *timer);//将日历时间转化为固定时间格式
返回的日期格式为:
星期几 月份 日期 时:分:秒 年\n\0
例如:Wed Jan 02 02:03:55 2014\n\0
其中,\n是一个换行符,\0是一个空字符,表示字符串结束。
#include<stdio.h>
#include<time.h>
int main()
{
	time_t t;
	struct tm *localtm;
	t=time(NULL);
	printf("calendar time:%ld\n",t);
	printf("ctime:%s\n",ctime(&t));
	localtm=localtime(&t);
	printf("The Local time is:%d-%d-%d %d:%d:%d\n",1900+localtm->tm_year,localtm->tm_mon,localtm->tm_mday,localtm->tm_hour,localtm->tm_min,localtm->tm_sec);
	printf("astime:%s\n",asctime(localtm));
	return 0;
}


4.自定义时间格式

strftime---string format  time
size_t strftime(
     char *strDest,
     size_t maxsize,
     const char *format,
     const struct tm *timeptr 
);
%a 星期几的简写
%A 星期几的全称
%b 月分的简写
%B 月份的全称
%c 标准的日期的时间串
%C 年份的后两位数字
%d 十进制表示的每月的第几天
%D 月/天/年
%e 在两字符域中,十进制表示的每月的第几天
%F 年-月-日
%g 年份的后两位数字,使用基于周的年
%G 年分,使用基于周的年
%h 简写的月份名
%H 24小时制的小时
%I 12小时制的小时
%j 十进制表示的每年的第几天
%m 十进制表示的月份
%M 十时制表示的分钟数
%n 新行符
%p 本地的AM或PM的等价显示
%r 12小时的时间
%R 显示小时和分钟:hh:mm
%S 十进制的秒数
%t 水平制表符
%T 显示时分秒:hh:mm:ss
%u 每周的第几天,星期一为第一天 (值从0到6,星期一为0)
%U 第年的第几周,把星期日做为第一天(值从0到53)
%V 每年的第几周,使用基于周的年
%w 十进制表示的星期几(值从0到6,星期天为0)
%W 每年的第几周,把星期一做为第一天(值从0到53)
%x 标准的日期串
%X 标准的时间串
%y 不带世纪的十进制年份(值从0到99)
%Y 带世纪部分的十制年份
%z,%Z 时区名称,如果不能得到时区名称则返回空字符。
%% 百分号
#include<stdio.h>
#include<time.h>
int main()
{
	time_t t;
	struct tm *localtm;
	char date[100];
	t=time(NULL);
	printf("ctime:%s\n",ctime(&t));
	localtm=localtime(&t);
	strftime(date,100,"Current time:%D %T",localtm);
	printf("%s\n",date);
	return 0;
}


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值