简单时间编程

时间概念的定义:
(1)UTC 世界标准时间(协调世界时):中国内地的时间为 UTC+8
(2)GMT 格林威治标准时间:等于UTC。这个名字的由来是因为本初子午线(零时区)经过英国的格林威治区。
(3)日历时间:从一个标准时间点到此时的时间经过的秒数。这个标准时间在Linux编译系统中被选定为:1970年1月1日00:00:00
  很多编程语言起源于UNIX系统,而UNIX认为1970年1月1日0点是时间纪元,这个时间点专业一点叫“epoch”。所以就····
日期时间函数:
需要标准库的头文件<time.h>
先来了解这个头文件里边定义几个重要的数据类型有:
第一个:typedef long time_t; time_t表示的是日历时间,他是有符号长整型,能表示的正整数的最大值为2^31=2147483648,也就是说最多就装得下2147483648秒的时间,折算成年大概就68年多一点,网上有资料说到2038年1月18日19:14:07,time_t类型的值就会填满,到了那个时间点,想想就激动。

第二个:我们发现上面这种日历时间实用性不大,给我们那么一个时间完全无法直接知晓现在是何年马月。于是struct tm结构体就来了。

struct tm {
int tm_sec;  //秒
int tm_min;  //分
int tm_hour; //时
int tm_mday; //天
int tm_mon;  //月
int tm_year; //年
int tm_wday; //星期几
int tm_yday; //一年中的第几天
int tm_isdst;//夏令时标识符
};

struct tm也叫做分解时间,就是根据time_t分解得到的。
具体操作函数:
(1)time():获取日历时间
函数原型:time_t time(time_t *t);
参数分析:指针t指向内存,该内存用来存储函数所得日历时间,不需要存储时指定为NULL
函数返回:日历时间

time_t时间--->struct tm时间:
(2)localtime():取得当地当前的时间日期,里边会涉及时区转换,并将该时间转换成“年月日时分秒”的格式存放。
函数原型:struct tm *localtime(const time_t *timep);
参数分析:timep指针指向time_t类型的日历时间
函数返回:struct tm结构的本地时间
(3)gmtime():取得当前的时间日期,注意这个函数返回时间是格林威治时间是没有经过时区转换的。其他和localtime()函数一样。

struct tm时间-->字符串表示
(4)asctime():将参数timeptr所指的tm结构中的信息(可以是经过或未经过时区转换的)转换字符串形式。
函数原型:char *asctime(const struct tm *timetpr);


time_t时间-->字符串表示
(5)ctime():将time_t日历时间以字符串的形式输出,输出的时间是有经过时区转换的。
函数原型:char *ctime(const time_t *timep);
代码时间:

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

int main(void)
{
    struct tm *ptr,*ptr1; /* 用于保存两种转化后的时间 */
    time_t cal_tm;        /* 用于保存日历时间 */
    
    cal_tm = time(NULL);  /* 获取日历时间 */
    
    ptr=localtime(<);   /* 将日历时间转换成本地时间 */
    printf("%s\n",asctime(ptr));
    
    ptr1=gmtime(<);     /* 将日历时间转换成格林威治时间 */
    printf("%s\n",asctime(ptr1));
    
    printf("%s\n",ctime(<));
    return 0;
}

实验结果:


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值