time gmtime localtime strftime 时间函数

C语言中time()函数

函数简介

  函数名: time
  头文件:time.h
  函数原型:time_t time(time_t * timer)

  功能: 获取当前的系统时间,返回的结果是一个time_t类型,其实就是一个大整数,其值表示从CUT(Coordinated Universal Time)时间1970年1月1日00:00:00(称为UNIX系统的Epoch时间)到当前时刻的秒数。然后调用localtime将time_t所表示的CUT时间转换为本地时间(我们是+8区,比CUT多8个小时)并转成struct tm类型,该类型的各数据成员分别表示年月日时分秒。

gmtime()简介

  包含头文件:time.h
  原型:struct tm *gmtime(long *clock);
  功能:把日期和时间转换为格林威治(GMT)时间的函数。将参数timep 所指的time_t 结构中的信息转换成真实世界所使用的时间日期表示方法,然后将结果由结构tm返回。
  结构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;
  };
  int tm_sec 代表目前秒数,正常范围为0-59,但允许至61秒
  int tm_min 代表目前分数,范围0-59
  int tm_hour 从午夜算起的时数,范围为0-23
  int tm_mday 目前月份的日数,范围01-31
  int tm_mon 代表目前月份,从一月算起,范围从0-11
  int tm_year 从1900 年算起至今的年数
  int tm_wday 一星期的日数,从星期一算起,范围为0-6
  int tm_yday 从今年1月1日算起至今的天数,范围为0-365
  int tm_isdst 日光节约时间的旗标
  此函数返回的时间日期未经时区转换,而是UTC时间。
  返回值 返回结构tm代表目前UTC 时间

编辑本段gmtime()的应用举例

  #include "stdio.h"
  #include "time.h"
  #include "stdlib.h"
  int main(void)
  {
  time_t t;
  struct tm *gmt, *area;
  tzset(); /* tzset()*/
  t = time(NULL);
  area = localtime(&t);
  printf("Local time is: %s", asctime(area));
  gmt = gmtime(&t);
  printf("GMT is: %s", asctime(gmt));
  return 0;

  }

strftime

strftime,是一种计算机函数,strftime() 函数根据区域设置格式化本地时间/日期,函数的功能将时间格式化,或者说格式化一个时间字符串。

函数简介

  函数功能:将时间格式化,或者说:格式化一个时间字符串。
  头文件:time.h
  函数原型:我们可以使用strftime()函数将时间格式化为我们想要的格式。它的原型如下:
   size_t  strftime(
  char *strDest,
   size_t  maxsize,
  const char *format,
  const struct tm *timeptr
  );
  参数说明:
  我们可以根据format指向字符串中格式命令把timeptr中保存的时间信息放在strDest指向的字符串中,最多向strDest中存放maxsize个字符。该函数返回向strDest指向的字符串中放置的字符数。
  函数strftime()的操作有些类似于sprintf():识别以 百分号 (%)开始的格式命令集合,格式化输出结果放在一个字符串中。格式化命令说明串strDest中各种日期和时间信息的确切表示方法。格式串中的其他 字符 原样放进串中。格式命令列在下面,它们是区分大小写的。
  %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 rawtime;
  struct tm * timeinfo;
  char timE [80];
  time ( &rawtime );
  timeinfo = localtime ( &rawtime );
  strftime ( timE,80,"Data:\n%Y-%m-%d \nTime:\n%I:%M:%S\n",timeinfo);
  printf ("%s", timE);
  return 0;
  }
  输出:
  Data:
  2010-09-02
  Time:
  04:22:11
  Press any key to continue
  这样就得到了我们常见的时间格式。



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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值