- 由于自己实际工作学习中没怎么用时间和日期的函数,在看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影响
分享到:
相关推荐
linux下处理日期函数的一些积累,希望能对大家有帮助。
本文从介绍基础概念入手,探讨了在C/C++中对日期和时间操作所用到的数据结构和函数,并对计时、时间的获取、时间的计算和显示格式等方面进行了阐述。
C/C++时间函数使用方法 C/C++对时间的操作也有许多值得大家注意的地方。最近,在技术群中有很多网友也多次问到过C++语言中对时间的操作、获取和显示等等的问题。下面,在这篇文章中,笔者将主要介绍在C/C++中时间和...
本文从介绍基础概念入手,探讨了在C/C++中对日期和时间操作所用到的数据结构和函数,并对计时、时间的获取、时间的计算和显示格式等方面进行了阐述。本文还通过大量的实例向你展示了time.h头文件中声明的各种函数和...
下面,在这篇文章中,笔者将主要介绍在C/C++中时间和日期的使用方法. 通过学习许多C/C++库,你可以有很多操作、使用时间的方法。但在这之前你需要了解一些“时间”和“日期”的概念,主要有以下几个: Coordinated ...
写的一个c语言函数获取windows下的日期和时间的类,相对mfc的CTime类增加了一些常用的操作,更重要的一点是它不需要对mfc的支持,可在任何windows下的c、c++开发的工程中使用。
C_Cpp中的时间日期的函数的用法; 初学者容易看懂的关于日期函数的介绍;
本文从介绍基础概念入手,探讨了在C/C++中对日期和时间操作所用到的数据结构和函数,并对计时、时间的获取、时间的计算和显示格式等方面进行了阐述。本文还通过大量的实例向你展示了time.h头文件中声明的各种函数和...
它是从事一线教学的大学教师根据多媒体教学演示和C语言初学者的特点,量身打造的一个简单易用的C/C++程序设计教学演示、学习与实验软件(支持TC2/TC3、VC6三种编译器,没有使用日期限制)。与软件配套的《 C/C++程序...
下面,在这篇文章中,笔者将主要介绍在C/C++中时间和日期的使用方法.通过学习许多C/C++库,你可以有很多操作、使用时间的方法。但在这之前你需要了解一些“时间”和“日期”的概念,主要有以下几个:Coordinated ...
这是我们软件测试课中设计决策表法所涉及到的实例,书中只给出了决策表而没有给出具体的代码,于是我就利用这个决策表自己动手用C语言把NextDate()函数给写出来了~~请大家赐教~~~
支持32位与64位的WINDOWS 7,它是从事一线教学的大学教师根据多媒体教学演示和C语言初学者的特点,量身打造的一个简单易用的C/C++程序设计教学演示、学习与实验软件(支持TC2/TC3、VC6三种编译器,没有使用日期限制)...
GPS UTC与北京时间的转换函数,方便使用。
版权所有 (C), 2010-$YEAR$, ****有限公司 文 件 名 : $FILE$ 版 本 号 : 初稿 作 者 : zhujun/016660 生成日期 : $YEAR$年$MONTH$月$DAY$日 最近修改 : 功能描述 : $end$ $selected$ 函数列表 : 修改...
本文从介绍基础概念入手,探讨了在C/C++中对日期和时间操作所用到的数据结构和函数,并对计时、时间的获取、时间的计算和显示格式等方面进行了阐述。本文还通过大量的实例向你展示了time.h头文件中声明的各种函数和...
C语言函数库,包含 C 标准库、IO 函数、字符处理函数、字符串函数、数学函数、时间和日期函数、其它函数等数百个常用的C语言函数,文档中对常用函数库的函数原型、详细功能、使用示例等进行了详细的介绍说明,。...
它是从事一线教学的大学教师根据多媒体教学演示和C语言初学者的特点,量身打造的一个简单易用的C/C++程序设计教学演示、学习与实验软件(支持TC2/TC3、VC6三种编译器,没有使用日期限制)。与软件配套的《 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++入门教程(每章配有同步实验)》融入了作者多年的教学和学习经验、编程建议、编程感悟、读书笔记功能等,同时,为了便于C语言学习,加入C语言流程控制语句演示动画、C语言学习指导、可以方便地...
支持最新操作系统WINDOWS 7,它是从事一线教学的大学教师根据C/C++ 初学者的特点,量身定制的一个简单易用的 C/C++程序设计学习与实验软件(支持TC2/TC3、VC6三种编译器,没有使用日期限制,重新集成在VISTA、WINDOWS ...