`
gaofen100
  • 浏览: 1187489 次
文章分类
社区版块
存档分类
最新评论

C、C++时间与日期函数

 
阅读更多
  • 由于自己实际工作学习中没怎么用时间和日期的函数,在看Unix环境高级编程6.10节和Python的time模块时,总感觉这些东西总是连不成串。

还是从C开始理一理吧。翻翻C标准(C++中的东西我看不懂),相关的也就是time.h这个东西了。

NULL CLOCKS_PER_SEC

类型

size_t clock_t time_t

结构体

tm

函数

asctime clock difftime localtime strftime
ctime gmtime mktime time

走马观花

暂时抛开和clock相关的东西。只看字面上和time直接相关的东西。


获取时间

如何从操作系统获取时间呢?

time_t time(time_t *t);

该函数返回从某个时间点(epoch)到现在为止所经过的秒数。(这个数称为日历时间)比如:

1319206097
  • (一般情况下这个时间点都是公元1970年1月1日0时,但是微软的C/C++编译器版本7中用的却是1899年12月31日0时,注意,编译器的版本不是MVSC的版本,比如MSVC2010也叫VC9,但对应的编译器版本是16)

这个数字对人来说可真不友好。比如上面这个对应的具体日期是什么,如果不是我写的我还真不知道

转成字符串

char *ctime(const time_t *timep);

我们知道,同一时刻各个时区的时间是不同的。这个函数会考虑当前的时区(通过环境变量TZ)

Fri Oct 21 22:08:17 2011\n\0

这下好看多了,但还是很不够...

分解时间,结构体 tm

我们可以将日历时间,转成包含时分秒等信息的结构体。这样处理起来就方面多了。

struct tm *gmtime(const time_t *timep);
struct tm *localtime(const time_t *timep);
  • 注意:返回的tm结构体的指针,指向的是其内部的一个静态tm结构体变量。

gmtime
格林威治时间

localtime
本地时间(东8区)

17

17

8

8

14

22

21

21

21日

9

9

10月(从0开始算)

111

111

2011年(从1900开始)

5

5

周五

293

293

一年中的第293天

0

0

不是夏时制

要从分解时间转换会日历时间,则使用

time_t mktime(struct tm *tm);

转成字符串2

前面的ctime可以从日历时间转成字符串,那么从分解时间如何转成字符串呢?

char *asctime(const struct tm *tm);

比如:前面的gmtime和localtime得到的分解时间,分别对应

Fri Oct 21 14:24:34 2011
Fri Oct 21 22:24:34 2011

不过这个东西太死板了吧,想自定义字符串怎么办?

size_t strftime(char *s, size_t max, const char *format,
                const struct tm *tm);

和printf类似,有一大堆转换符可用,这样一来,我们可以得到

Fri
Friday
2011-10-21
10:24:34 PM
...

类型

简单罗列一下:

time_t

一个整数类型,但具体的范围和精度是由编译器实现所定义的。

struct tm

结构体tm 表示分解时间(broken-down time)

structtm{

inttm_sec;

inttm_min;

/* 分钟: [0 - 59] */

inttm_hour;

/* 小时: [0 - 23] */

inttm_mday;

/* 日: [1 - 31] */

inttm_mon;

/* 月: [0 - 11] */

inttm_year;

/* 年: 从1900年开始算起 */

inttm_wday;

/* 星期X: [0 - 6] */

inttm_yday;

/* 一年中第X天: [0 - 365] */

inttm_isdst;

/* 夏时制标记: <0, 0, >0 */

};

夏时值,即:日光节约时制(Daylight Saving Time)

clock_t

clock_t clock(void);

返回程序自开始执行到目前为止所占用的处理机时间。如果处理机时间不可使用,那么返回-1。clock()/CLOCKS_PER_SEC是以秒为单位表示的时间。

其他

Unix

在Unix下,与time()相比,

int gettimeofday(struct timeval *tv, struct timezone *tz);

可以获得更高的分辨率(最高为微秒)。

QThread::sleep()在unix下的实现使用该函数。

python的time模块中的time()/sleep()也使用该函数。

locale

函数strftime()生成的字符串受locale中的LC_TIME影响


分享到:
评论

相关推荐

    c/c++中的日期处理函数详解

    linux下处理日期函数的一些积累,希望能对大家有帮助。

    c语言常用时间函数

    本文从介绍基础概念入手,探讨了在C/C++中对日期和时间操作所用到的数据结构和函数,并对计时、时间的获取、时间的计算和显示格式等方面进行了阐述。

    C/C++时间函数使用方法

    C/C++时间函数使用方法 C/C++对时间的操作也有许多值得大家注意的地方。最近,在技术群中有很多网友也多次问到过C++语言中对时间的操作、获取和显示等等的问题。下面,在这篇文章中,笔者将主要介绍在C/C++中时间和...

    C语言时间函数的使用

    本文从介绍基础概念入手,探讨了在C/C++中对日期和时间操作所用到的数据结构和函数,并对计时、时间的获取、时间的计算和显示格式等方面进行了阐述。本文还通过大量的实例向你展示了time.h头文件中声明的各种函数和...

    c/c++获取系统时间函数的方法示例

    下面,在这篇文章中,笔者将主要介绍在C/C++中时间和日期的使用方法. 通过学习许多C/C++库,你可以有很多操作、使用时间的方法。但在这之前你需要了解一些“时间”和“日期”的概念,主要有以下几个: Coordinated ...

    windows下c语言获取日期时间的类

    写的一个c语言函数获取windows下的日期和时间的类,相对mfc的CTime类增加了一些常用的操作,更重要的一点是它不需要对mfc的支持,可在任何windows下的c、c++开发的工程中使用。

    C_Cpp中的时间日期函数的用法

    C_Cpp中的时间日期的函数的用法; 初学者容易看懂的关于日期函数的介绍;

    C++中的日期和时间_time_t与struct_tm

    本文从介绍基础概念入手,探讨了在C/C++中对日期和时间操作所用到的数据结构和函数,并对计时、时间的获取、时间的计算和显示格式等方面进行了阐述。本文还通过大量的实例向你展示了time.h头文件中声明的各种函数和...

    C与C++程序设计学习与实验系统 2011.2

    它是从事一线教学的大学教师根据多媒体教学演示和C语言初学者的特点,量身打造的一个简单易用的C/C++程序设计教学演示、学习与实验软件(支持TC2/TC3、VC6三种编译器,没有使用日期限制)。与软件配套的《 C/C++程序...

    基于C/C++时间函数的使用详解

    下面,在这篇文章中,笔者将主要介绍在C/C++中时间和日期的使用方法.通过学习许多C/C++库,你可以有很多操作、使用时间的方法。但在这之前你需要了解一些“时间”和“日期”的概念,主要有以下几个:Coordinated ...

    NextDate()函数判断输入日期的下一天(C语言编写)

    这是我们软件测试课中设计决策表法所涉及到的实例,书中只给出了决策表而没有给出具体的代码,于是我就利用这个决策表自己动手用C语言把NextDate()函数给写出来了~~请大家赐教~~~

    C与C++程序设计学习与实验系统

    支持32位与64位的WINDOWS 7,它是从事一线教学的大学教师根据多媒体教学演示和C语言初学者的特点,量身打造的一个简单易用的C/C++程序设计教学演示、学习与实验软件(支持TC2/TC3、VC6三种编译器,没有使用日期限制)...

    GPS UTC时间转换函数

    GPS UTC与北京时间的转换函数,方便使用。

    c++的注释格式规范

    版权所有 (C), 2010-$YEAR$, ****有限公司 文 件 名 : $FILE$ 版 本 号 : 初稿 作 者 : zhujun/016660 生成日期 : $YEAR$年$MONTH$月$DAY$日 最近修改 : 功能描述 : $end$ $selected$ 函数列表 : 修改...

    C++ 时间转换与表示

    本文从介绍基础概念入手,探讨了在C/C++中对日期和时间操作所用到的数据结构和函数,并对计时、时间的获取、时间的计算和显示格式等方面进行了阐述。本文还通过大量的实例向你展示了time.h头文件中声明的各种函数和...

    C语言函数库详解.doc

    C语言函数库,包含 C 标准库、IO 函数、字符处理函数、字符串函数、数学函数、时间和日期函数、其它函数等数百个常用的C语言函数,文档中对常用函数库的函数原型、详细功能、使用示例等进行了详细的介绍说明,。...

    C_C++程序设计学习与实验系统 2010 part1

    它是从事一线教学的大学教师根据多媒体教学演示和C语言初学者的特点,量身打造的一个简单易用的C/C++程序设计教学演示、学习与实验软件(支持TC2/TC3、VC6三种编译器,没有使用日期限制)。与软件配套的《 C/C++程序...

    c++语言参考速查工具

    标准c时间与日期函数 11.标准c内存函数 12.其他标准c函数 13.C++标准输入输出 标准模板库(STL) 部分 1.C++中的字符串类(string) 2.顺序结构 C++ Vectors C++ Lists C++ Double-Ended Queues 2....

    C/C++程序设计学习与实验系统 V2008.13.part1

    与软件配套的《 C/C++入门教程(每章配有同步实验)》融入了作者多年的教学和学习经验、编程建议、编程感悟、读书笔记功能等,同时,为了便于C语言学习,加入C语言流程控制语句演示动画、C语言学习指导、可以方便地...

    c/c++程序设计学习与实验系统

    支持最新操作系统WINDOWS 7,它是从事一线教学的大学教师根据C/C++ 初学者的特点,量身定制的一个简单易用的 C/C++程序设计学习与实验软件(支持TC2/TC3、VC6三种编译器,没有使用日期限制,重新集成在VISTA、WINDOWS ...

Global site tag (gtag.js) - Google Analytics