• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >C语言 > c语言 time.h 详细介绍

c语言 time.h 详细介绍

作者:飘零过客 字体:[增加 减小] 来源:互联网 时间:2017-09-12

飘零过客通过本文主要向大家介绍了time-h,ctime,时间函数等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
< ctime> (time.h)

包含获得和使用日期和时间信息的函数的定义。

一、Macro constants(宏常量)

  • CLOCKS_PER_SEC:滴答声/秒,时间的单位
  • NULL:空指针

二、types(类型)

  • clock_t:时钟类型,表示时钟滴答数的基本数据类型

  • size_t:无符号整型

  • time_t:时间类型,表示时间

  • struct tm:时间结构,包含日历、时间

Member Type Meaning Range
tm_sec int seconds after the minute0-60*
tm_min int minutes after the hour 0-59
tm_hour int hours since midnight 0-23
tm_mday int day of the month 1-31
tm_mon int months since January 0-11
tm_year int years since 1900
tm_wday int days since Sunday 0-6
tm_yday int days since January 1 0-365
tm_isdst int Daylight Saving Time flag

三、时间操作

1、clock_t clock (void);

描述:从特定时间开始消耗的时间,如果失败,返回-1。

/* clock example: frequency of primes */
#include <stdio.h>      /* printf */
#include <time.h>       /* clock_t, clock, CLOCKS_PER_SEC */
#include <math.h>       /* sqrt */

int frequency_of_primes (int n) {
  int i,j;
  int freq=n-1;
  for (i=2; i<=n; ++i) for (j=sqrt(i);j>1;--j) if (i%j==0) {--freq; break;}
  return freq;
}

int main ()
{
  clock_t t;
  int f;
  t = clock();
  printf ("Calculating...\n");
  f = frequency_of_primes (99999);
  printf ("The number of primes lower than 100,000 is: %d\n",f);
  t = clock() - t;
  printf ("It took me %d clicks (%f seconds).\n",t,((float)t)/CLOCKS_PER_SEC);
  return 0;
}

2、double difftime (time_t end, time_t beginning);

描述:计算从beginning到end的时间(end-beginning)(单位/秒)。

/* difftime example */
#include <stdio.h>      /* printf */
#include <time.h>       /* time_t, struct tm, difftime, time, mktime */

int main ()
{
  time_t now;
  struct tm newyear;
  double seconds;

  time(&now);  /* get current time; same as: now = time(NULL)  */

  newyear = *localtime(&now);

  newyear.tm_hour = 0; newyear.tm_min = 0; newyear.tm_sec = 0;
  newyear.tm_mon = 0;  newyear.tm_mday = 1;

  seconds = difftime(now,mktime(&newyear));

  printf ("%.f seconds since new year in the current timezone.\n", seconds);

  return 0;
}

3、time_t mktime (struct tm * timeptr);

描述:

  • 返回timeptr指针描述的时间,如果时间未描述,返回-1。

  • localtime的逆变换

  • 忽略结构成员tm_wday and tm_yday;其他成员及时超出有效范围,也将解释。

/* mktime example: weekday calculator */
#include <stdio.h>      /* printf, scanf */
#include <time.h>       /* time_t, struct tm, time, mktime */

int main ()
{
  time_t rawtime;
  struct tm * timeinfo;
  int year, month ,day;
  const char * weekday[] = { "Sunday", "Monday",
                             "Tuesday", "Wednesday",
                             "Thursday", "Friday", "Saturday"};

  /* prompt user for date */
  printf ("Enter year: "); fflush(stdout); scanf ("%d",&year);
  printf ("Enter month: "); fflush(stdout); scanf ("%d",&month);
  printf ("Enter day: "); fflush(stdout); scanf ("%d",&day);

  /* get current timeinfo and modify it to the user's choice */
  time ( &rawtime );
  timeinfo = localtime ( &rawtime );
  timeinfo->tm_year = year - 1900;
  timeinfo->tm_mon = month - 1;
  timeinfo->tm_mday = day;

  /* call mktime: timeinfo->tm_wday will be set */
  mktime ( timeinfo );

  printf ("That day is a %s.\n", weekday[timeinfo->tm_wday]);

  return 0;
}

4、time_t time (time_t* timer);

描述:

  • 获取当前时间。

  • 如果时间指针不为NULL,将返回其指向的时间。

  • 不能取得时间,返回-1.

  • 返回的时间基于: 00:00 hours, Jan 1, 1970 UTC

/* time example */
#include <stdio.h>      /* printf */
#include <time.h>       /* time_t, struct tm, difftime, time, mktime */

int main ()
{
  time_t timer;
  struct tm y2k = {0};
  double seconds;

  y2k.tm_hour = 0;   y2k.tm_min = 0; y2k.tm_sec = 0;
  y2k.tm_year = 100; y2k.tm_mon = 0; y2k.tm_mday = 1;

  time(&timer);  /* get current time; same as: timer = time(NULL)  */

  seconds = difftime(timer,mktime(&y2k));

  printf ("%.f seconds since January 1, 2000 in the current timezone", seconds);

  return 0;
}

四、转换

1、char* asctime (const struct tm * timeptr);

描述:

返回timeptr指针的时间,用C-字符串描述

返回类型为:Www Mmm dd hh:mm:ss yyyy(星期 月 日 时分秒 年)

输出在新一行,以空字符串结束
/* asctime example */
#include <stdio.h>      /* printf */
#include <time.h>       /* time_t, struct tm, time, localtime, asctime */

int main ()
{
  time_t rawtime;
  struct tm * timeinfo;

  time ( &rawtime );
  timeinfo = localtime ( &rawtime );
  printf ( "The current date/time is: %s", asctime (timeinfo) );

  return 0;
}

2、char* ctime (const time_t * timer);

描述:

返回timer指针的时间,用C-字符串描述

返回类型为:Www Mmm dd hh:mm:ss yyyy(星期 月 日 时分秒 年)

输出在新一行,以空字符串结束

和asctime(localtime(timer))一样
/* ctime example */
#include <stdio.h>      /* printf */
#include <time.h>       /* time_t, time, ctime */

int main ()
{
  time_t rawtime;

  time (&rawtime);
  printf ("The current local time is: %s", ctime (&rawtime));

  return 0;
}

3、struct tm * gmtime (const time_t * timer);

描述:

利用timer填充tm结构体

把time_t时间转化为UTC time
/* gmtime example */
#include <stdio.h>      /* puts, printf */
#include <time.h>       /* time_t, struct tm, time, gmtime */

#define MST (-7)
#define UTC (0)
#define CCT (+8)

int main ()
{
  time_t rawtime;
  struct tm * ptm;

  time ( &rawtime );

  ptm = gmtime ( &rawtime );

  puts ("Current time around the World:");
  printf ("Phoenix, AZ (U.S.) :  %2d:%02d\n", (ptm->tm_hour+MST)%24, ptm->tm_min);
  printf ("Reykjavik (Iceland) : %2d:%02d\n", (ptm->tm_hour+UTC)%24, ptm->tm_min);
  printf ("Beijing (China) :     %2d:%02d\n", (ptm->tm_hour+CCT)%24, ptm->tm_min);

  return 0;
}

4、struct tm * localtime (const time_t * timer);

描述:

利用timer填充tm结构体

把time_t时间转化为 local time
/* localtime example */
#include <stdio.h>      /* puts, printf */
#include <time.h>       /* time_t, struct tm, time, localtime */

int main ()
{
  time_t rawtime;
  struct tm * timeinfo;

  time (&rawtime);
  timeinfo = localtime (&rawtime);
  printf ("Current local time and date: %s", asctime(timeinfo));

  return 0;
}

5、·size_t strftime (char* ptr, size_t maxsize, const char* format,const struct tm* timeptr );

描述:

把timeptr中的时间,以特定的格式,复制到ptr中

以format格式,复制时间timeptr到ptr,最多maxsize字符。

ptr:目的数组,存储C-字符串

maxsize:包括末尾空字符,复制到ptr的最大字符数

format:格式

返回值:返回复制到ptr的字符数(不包括末尾空字符),若超出范围maxsize,返回0
/* strftime example */
#include <stdio.h>      /* puts */
#include <time.h>       /* time_t, struct tm, time, localtime, strftime */

int main ()
{
  time_t rawtime;
  struct tm * timeinfo;
  char buffer [80];

  time (&rawtime);
  timeinfo = localtime (&rawtime);

  strftime (buffer,80,"Now it's %I:%M%p.",timeinfo);
  puts (buffer);

  return 0;
}
specifier Replaced by Example
%a Abbreviated weekday name *
%A Full weekday name * Thursday
%b Abbreviated month name * Aug
%B Full month name * August
%c Date and time representation * Thu Aug 23 14:55:02 2001
%C Year divided by 100 and truncated to integer (00-99) 20
%d Day of the month, zero-padded (01-31) 23
%D Short MM/DD/YY date, equivalent to %m/%d/%y 08/23/01
%e Day of the month, space-padded ( 1-31) 23
%F Short YYYY-MM-DD date, equivalent to %Y-%m-%d 2001-08-23
%g Week-based year, last two digits (00-99) 01
%G Week-based year 2001
%h Abbreviated month name * (same as %b) Aug
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • c语言 time.h 详细介绍

相关文章

  • 2017-05-28用typedef定义类型详细总结
  • 2017-05-28VS2010/MFC编程(常用控件:树形控件Tree Control控件创建h和实例)
  • 2017-05-28关于C语言指针赋值的问题详解
  • 2017-05-28C语言使用openSSL库DES模块实现加密功能详解
  • 2017-05-28详解C语言中index()函数和rindex()函数的用法
  • 2017-05-28C++空类及没有成员变量的类的大小实例分析
  • 2017-05-28利用C语言实践OOP,以及new,delete的深入分析
  • 2017-05-28c语言printf函数的使用详解
  • 2017-05-28如何在C语言的宏中使用类型关键字
  • 2017-05-28C++基础入门教程(七):一些比较特别的基础语法总结

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • C语言编写银行打印程序实例参考
    • C++中求组合数的各种方法总结详解
    • C语言快速幂取模算法小结
    • 详解C语言中的memset()函数
    • C++采用TLS线程局部存储的用法实例
    • C++Primer笔记之顺序容器的使用详解
    • 使用C语言来解决循环队列问题的方法
    • 可变参数函数
    • 详谈C++中虚基类在派生类中的内存布局
    • DSP中浮点转定点运算--浮点数的存储格式

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有