Linux下用C获取当前时间
<p>Linux下用C获取当前时间,具体如下:</p>
<p>
<strong>代码(可以把clock_gettime换成time(NULL))</strong></p>
<div class="jb51code">
<div>
<div class="syntaxhighlightercpp" id="highlighter_377180">
<div class="toolbar">
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
<div class="line number1 index0 alt2">
1</div>
<div class="line number2 index1 alt1">
2</div>
<div class="line number3 index2 alt2">
3</div>
<div class="line number4 index3 alt1">
4</div>
<div class="line number5 index4 alt2">
5</div>
<div class="line number6 index5 alt1">
6</div>
<div class="line number7 index6 alt2">
7</div>
<div class="line number8 index7 alt1">
8</div>
<div class="line number9 index8 alt2">
9</div>
<div class="line number10 index9 alt1">
10</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2">
<code class="cpp keyword bold">void</code> <code class="cpp plain">getNowTime()</code>
</div>
<div class="line number2 index1 alt1">
<code class="cpp plain">{</code>
</div>
<div class="line number3 index2 alt2">
<code class="cpp spaces"> </code><code class="cpp plain">timespec </code><code class="cpp functions bold">time</code><code class="cpp plain">;</code>
</div>
<div class="line number4 index3 alt1">
<code class="cpp spaces"> </code><code class="cpp plain">clock_gettime(CLOCK_REALTIME, &</code><code class="cpp functions bold">time</code><code class="cpp plain">); </code><code class="cpp comments">//获取相对于1970到现在的秒数</code>
</div>
<div class="line number5 index4 alt2">
<code class="cpp spaces"> </code><code class="cpp color1 bold">tm</code> <code class="cpp plain">nowTime;</code>
</div>
<div class="line number6 index5 alt1">
<code class="cpp spaces"> </code><code class="cpp plain">localtime_r(&</code><code class="cpp functions bold">time</code><code class="cpp plain">.tv_sec, &nowtime);</code>
</div>
<div class="line number7 index6 alt2">
<code class="cpp spaces"> </code><code class="cpp color1 bold">char</code> <code class="cpp plain">current;</code>
</div>
<div class="line number8 index7 alt1">
<code class="cpp spaces"> </code><code class="cpp functions bold">sprintf</code><code class="cpp plain">(current, </code><code class="cpp string">"%04d%02d%02d%02d:%02d:%02d"</code><code class="cpp plain">, nowTime.tm_year + 1900, nowTime.tm_mon, nowTime.tm_mday, </code>
</div>
<div class="line number9 index8 alt2">
<code class="cpp spaces"> </code><code class="cpp plain">nowTime.tm_hour, nowTime.tm_min, nowTime.tm_sec);</code>
</div>
<div class="line number10 index9 alt1">
<code class="cpp plain">}</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div class="codetool" id="codetool">
<div class="code_n">
<textarea></textarea>
</div>
</div>
</div>
<p>
分析:</p>
<p>
<strong>clock_gettime()</strong></p>
<p>
函数"clock_gettime"是基于Linux C语言的时间函数,他可以用于计算精度和纳秒。</p>
<p>
语法:</p>
<div class="jb51code">
<div>
<div class="syntaxhighlightercpp" id="highlighter_877540">
<div class="toolbar">
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
<div class="line number1 index0 alt2">
1</div>
<div class="line number2 index1 alt1">
2</div>
<div class="line number3 index2 alt2">
3</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2">
<code class="cpp preprocessor">#include<time.h></code>
</div>
<div class="line number2 index1 alt1">
</div>
<div class="line number3 index2 alt2">
<code class="cpp color1 bold">int</code> <code class="cpp plain">clock_gettime(clockid_t clk_id,</code><code class="cpp keyword bold">struct</code> <code class="cpp plain">timespec *tp);</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div class="codetool" id="codetool">
<div class="code_n">
<textarea></textarea>
</div>
</div>
</div>
<p>
参数:</p>
<p>
clk_id : 检索和设置的clk_id指定的时钟时间。</p>
<p>
CLOCK_REALTIME:系统实时时间,随系统实时时间改变而改变,即从UTC1970-1-1 0:0:0开始计时,中间时刻如果系统时间被用户改成其他,则对应的时间相应改变</p>
<ul>
<li>
CLOCK_MONOTONIC:从系统启动这一刻起开始计时,不受系统时间被用户改变的影响</li>
<li>
CLOCK_PROCESS_CPUTIME_ID:本进程到当前代码系统CPU花费的时间</li>
<li>
CLOCK_THREAD_CPUTIME_ID:本线程到当前代码系统CPU花费的时间</li>
</ul>
<div class="jb51code">
<div>
<div class="syntaxhighlightercpp" id="highlighter_886172">
<div class="toolbar">
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
<div class="line number1 index0 alt2">
1</div>
<div class="line number2 index1 alt1">
2</div>
<div class="line number3 index2 alt2">
3</div>
<div class="line number4 index3 alt1">
4</div>
<div class="line number5 index4 alt2">
5</div>
<div class="line number6 index5 alt1">
6</div>
<div class="line number7 index6 alt2">
7</div>
<div class="line number8 index7 alt1">
8</div>
<div class="line number9 index8 alt2">
9</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2">
<code class="cpp keyword bold">struct</code> <code class="cpp plain">timespec</code>
</div>
<div class="line number2 index1 alt1">
</div>
<div class="line number3 index2 alt2">
<code class="cpp plain">{</code>
</div>
<div class="line number4 index3 alt1">
</div>
<div class="line number5 index4 alt2">
<code class="cpp color1 bold">time_t</code> <code class="cpp plain">tv_sec; </code><code class="cpp comments">/* 秒*/</code>
</div>
<div class="line number6 index5 alt1">
</div>
<div class="line number7 index6 alt2">
<code class="cpp color1 bold">long</code> <code class="cpp plain">tv_nsec; </code><code class="cpp comments">/* 纳秒*/</code>
</div>
<div class="line number8 index7 alt1">
</div>
<div class="line number9 index8 alt2">
<code class="cpp plain">};</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div class="codetool" id="codetool">
<div class="code_n">
<textarea></textarea>
</div>
</div>
</div>
<p>
<strong>localtime()</strong></p>
<p>
localtime是 把从1970-1-1零点零分到当前时间系统所偏移的秒数时间转换为本地时间.</p>
<p>
语法</p>
<p>
说明:此函数获得的tm结构体的时间是日历时间。</p>
<p>
用 法: struct tm *localtime(const time_t *clock);</p>
<p>
返回值:返回指向tm 结构体的指针.tm结构体是time.h中定义的用于分别存储时间的各个量(年月日等)的结构体.</p>
<p>
例1:</p>
<div class="jb51code">
<div>
<div class="syntaxhighlightercpp" id="highlighter_752901">
<div class="toolbar">
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
<div class="line number1 index0 alt2">
1</div>
<div class="line number2 index1 alt1">
2</div>
<div class="line number3 index2 alt2">
3</div>
<div class="line number4 index3 alt1">
4</div>
<div class="line number5 index4 alt2">
5</div>
<div class="line number6 index5 alt1">
6</div>
<div class="line number7 index6 alt2">
7</div>
<div class="line number8 index7 alt1">
8</div>
<div class="line number9 index8 alt2">
9</div>
<div class="line number10 index9 alt1">
10</div>
<div class="line number11 index10 alt2">
11</div>
<div class="line number12 index11 alt1">
12</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2">
<code class="cpp preprocessor">#include <stdio.h></code>
</div>
<div class="line number2 index1 alt1">
<code class="cpp preprocessor">#include <stddef.h></code>
</div>
<div class="line number3 index2 alt2">
<code class="cpp preprocessor">#include <time.h></code>
</div>
<div class="line number4 index3 alt1">
<code class="cpp color1 bold">int</code> <code class="cpp plain">main(</code><code class="cpp keyword bold">void</code><code class="cpp plain">)</code>
</div>
<div class="line number5 index4 alt2">
<code class="cpp plain">{</code>
</div>
<div class="line number6 index5 alt1">
<code class="cpp spaces"> </code><code class="cpp color1 bold">time_t</code> <code class="cpp plain">timer;</code><code class="cpp comments">//time_t就是long int 类型</code>
</div>
<div class="line number7 index6 alt2">
<code class="cpp spaces"> </code><code class="cpp keyword bold">struct</code> <code class="cpp color1 bold">tm</code> <code class="cpp plain">*tblock;</code>
</div>
<div class="line number8 index7 alt1">
<code class="cpp spaces"> </code><code class="cpp plain">timer = </code><code class="cpp functions bold">time</code><code class="cpp plain">(NULL);</code>
</div>
<div class="line number9 index8 alt2">
<code class="cpp spaces"> </code><code class="cpp plain">tblock = </code><code class="cpp functions bold">localtime</code><code class="cpp plain">(&timer);</code>
</div>
<div class="line number10 index9 alt1">
<code class="cpp spaces"> </code><code class="cpp functions bold">printf</code><code class="cpp plain">(</code><code class="cpp string">"Local time is: %s\n"</code><code class="cpp plain">, </code><code class="cpp functions bold">asctime</code><code class="cpp plain">(tblock));</code>
</div>
<div class="line number11 index10 alt2">
<code class="cpp spaces"> </code><code class="cpp keyword bold">return</code> <code class="cpp plain">0;</code>
</div>
<div class="line number12 index11 alt1">
<code class="cpp plain">}</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div class="codetool" id="codetool">
<div class="code_n">
<textarea></textarea>
</div>
</div>
</div>
<p>
执行结果:</p>
<p>
Local time is: Mon Feb 16 11:29:26 2009</p>
<p>
例2:</p>
<p>
上面的例子用了asctime函数,下面这个例子不使用这个函数一样能获取系统当前时间。需要注意的是年份加上1900,月份加上1。</p>
<div class="jb51code">
<div>
<div class="syntaxhighlightercpp" id="highlighter_767564">
<div class="toolbar">
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
<div class="line number1 index0 alt2">
1</div>
<div class="line number2 index1 alt1">
2</div>
<div class="line number3 index2 alt2">
3</div>
<div class="line number4 index3 alt1">
4</div>
<div class="line number5 index4 alt2">
5</div>
<div class="line number6 index5 alt1">
6</div>
<div class="line number7 index6 alt2">
7</div>
<div class="line number8 index7 alt1">
8</div>
<div class="line number9 index8 alt2">
9</div>
<div class="line number10 index9 alt1">
10</div>
<div class="line number11 index10 alt2">
11</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2">
<code class="cpp preprocessor">#include<time.h></code>
</div>
<div class="line number2 index1 alt1">
<code class="cpp preprocessor">#include<stdio.h></code>
</div>
<div class="line number3 index2 alt2">
<code class="cpp color1 bold">int</code> <code class="cpp plain">main()</code>
</div>
<div class="line number4 index3 alt1">
<code class="cpp plain">{</code>
</div>
<div class="line number5 index4 alt2">
<code class="cpp spaces"> </code><code class="cpp keyword bold">struct</code> <code class="cpp color1 bold">tm</code> <code class="cpp plain">*t;</code>
</div>
<div class="line number6 index5 alt1">
<code class="cpp spaces"> </code><code class="cpp color1 bold">time_t</code> <code class="cpp plain">tt;</code>
</div>
<div class="line number7 index6 alt2">
<code class="cpp spaces"> </code><code class="cpp functions bold">time</code><code class="cpp plain">(&tt);</code>
</div>
<div class="line number8 index7 alt1">
<code class="cpp spaces"> </code><code class="cpp plain">t = </code><code class="cpp functions bold">localtime</code><code class="cpp plain">(&tt);</code>
</div>
<div class="line number9 index8 alt2">
<code class="cpp spaces"> </code><code class="cpp functions bold">printf</code><code class="cpp plain">(</code><code class="cpp string">"%4d年%02d月%02d日 %02d:%02d:%02d\n"</code><code class="cpp plain">, t->tm_year + 1900, t->tm_mon + 1, t->tm_mday, t->tm_hour, t->tm_min, t->tm_sec);</code>
</div>
<div class="line number10 index9 alt1">
<code class="cpp spaces"> </code><code class="cpp keyword bold">return</code> <code class="cpp plain">0;</code>
</div>
<div class="line number11 index10 alt2">
<code class="cpp plain">}</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div class="codetool" id="codetool">
<div class="code_n">
<textarea></textarea>
</div>
</div>
</div>
<p>
<strong>localtime()与localtime_r()的区别</strong></p>
<p>
localtime():</p>
<div class="jb51code">
<div>
<div class="syntaxhighlightercpp" id="highlighter_589778">
<div class="toolbar">
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
<div class="line number1 index0 alt2">
1</div>
<div class="line number2 index1 alt1">
2</div>
<div class="line number3 index2 alt2">
3</div>
<div class="line number4 index3 alt1">
4</div>
<div class="line number5 index4 alt2">
5</div>
<div class="line number6 index5 alt1">
6</div>
<div class="line number7 index6 alt2">
7</div>
<div class="line number8 index7 alt1">
8</div>
<div class="line number9 index8 alt2">
9</div>
<div class="line number10 index9 alt1">
10</div>
<div class="line number11 index10 alt2">
11</div>
<div class="line number12 index11 alt1">
12</div>
<div class="line number13 index12 alt2">
13</div>
<div class="line number14 index13 alt1">
14</div>
<div class="line number15 index14 alt2">
15</div>
<div class="line number16 index15 alt1">
16</div>
<div class="line number17 index16 alt2">
17</div>
<div class="line number18 index17 alt1">
18</div>
<div class="line number19 index18 alt2">
19</div>
<div class="line number20 index19 alt1">
20</div>
<div class="line number21 index20 alt2">
21</div>
<div class="line number22 index21 alt1">
22</div>
<div class="line number23 index22 alt2">
23</div>
<div class="line number24 index23 alt1">
24</div>
<div class="line number25 index24 alt2">
25</div>
<div class="line number26 index25 alt1">
26</div>
<div class="line number27 index26 alt2">
27</div>
<div class="line number28 index27 alt1">
28</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2">
<code class="cpp preprocessor">#include <cstdlib> </code>
</div>
<div class="line number2 index1 alt1">
<code class="cpp preprocessor">#include <iostream> </code>
</div>
<div class="line number3 index2 alt2">
<code class="cpp preprocessor">#include <time.h> </code>
</div>
<div class="line number4 index3 alt1">
<code class="cpp preprocessor">#include <stdio.h> </code>
</div>
<div class="line number5 index4 alt2">
<code class="cpp spaces"> </code>
</div>
<div class="line number6 index5 alt1">
<code class="cpp keyword bold">using</code> <code class="cpp keyword bold">namespace</code> <code class="cpp plain">std; </code>
</div>
<div class="line number7 index6 alt2">
<code class="cpp spaces"> </code>
</div>
<div class="line number8 index7 alt1">
<code class="cpp color1 bold">int</code> <code class="cpp plain">main(</code><code class="cpp color1 bold">int</code> <code class="cpp plain">argc, </code><code class="cpp color1 bold">char</code> <code class="cpp plain">*argv[]) </code>
</div>
<div class="line number9 index8 alt2">
<code class="cpp plain">{ </code>
</div>
<div class="line number10 index9 alt1">
<code class="cpp spaces"> </code><code class="cpp color1 bold">time_t</code> <code class="cpp plain">tNow =</code><code class="cpp functions bold">time</code><code class="cpp plain">(NULL); </code>
</div>
<div class="line number11 index10 alt2">
<code class="cpp spaces"> </code><code class="cpp color1 bold">time_t</code> <code class="cpp plain">tEnd = tNow + 1800; </code>
</div>
<div class="line number12 index11 alt1">
<code class="cpp spaces"> </code><code class="cpp comments">//注意下面两行的区别 </code>
</div>
<div class="line number13 index12 alt2">
<code class="cpp spaces"> </code><code class="cpp keyword bold">struct</code> <code class="cpp color1 bold">tm</code><code class="cpp plain">* ptm = </code><code class="cpp functions bold">localtime</code><code class="cpp plain">(&tNow); </code>
</div>
<div class="line number14 index13 alt1">
<code class="cpp spaces"> </code><code class="cpp keyword bold">struct</code> <code class="cpp color1 bold">tm</code><code class="cpp plain">* ptmEnd = </code><code class="cpp functions bold">localtime</code><code class="cpp plain">(&tEnd); </code>
</div>
<div class="line number15 index14 alt2">
<code class="cpp spaces"> </code>
</div>
<div class="line number16 index15 alt1">
<code class="cpp spaces"> </code><code class="cpp color1 bold">char</code> <code class="cpp plain">szTmp = {0}; </code>
</div>
<div class="line number17 index16 alt2">
<code class="cpp spaces"> </code><code class="cpp functions bold">strftime</code><code class="cpp plain">(szTmp,50,</code><code class="cpp string">"%H:%M:%S"</code><code class="cpp plain">,ptm); </code>
</div>
<div class="line number18 index17 alt1">
<code class="cpp spaces"> </code><code class="cpp color1 bold">char</code> <code class="cpp plain">szEnd = {0}; </code>
</div>
<div class="line number19 index18 alt2">
<code class="cpp spaces"> </code><code class="cpp functions bold">strftime</code><code class="cpp plain">(szEnd,50,</code><code class="cpp string">"%H:%M:%S"</code><code class="cpp plain">,ptmEnd); </code>
</div>
<div class="line number20 index19 alt1">
<code class="cpp spaces"> </code>
</div>
<div class="line number21 index20 alt2">
<code class="cpp spaces"> </code>
</div>
<div class="line number22 index21 alt1">
<code class="cpp spaces"> </code><code class="cpp functions bold">printf</code><code class="cpp plain">(</code><code class="cpp string">"%s /n"</code><code class="cpp plain">,szTmp); </code>
</div>
<div class="line number23 index22 alt2">
<code class="cpp spaces"> </code><code class="cpp functions bold">printf</code><code class="cpp plain">(</code><code class="cpp string">"%s /n"</code><code class="cpp plain">,szEnd); </code>
</div>
<div class="line number24 index23 alt1">
<code class="cpp spaces"> </code>
</div>
<div class="line number25 index24 alt2">
<code class="cpp spaces"> </code>
</div>
<div class="line number26 index25 alt1">
<code class="cpp spaces"> </code><code class="cpp functions bold">system</code><code class="cpp plain">(</code><code class="cpp string">"PAUSE"</code><code class="cpp plain">); </code>
</div>
<div class="line number27 index26 alt2">
<code class="cpp spaces"> </code><code class="cpp keyword bold">return</code> <code class="cpp plain">EXIT_SUCCESS; </code>
</div>
<div class="line number28 index27 alt1">
<code class="cpp plain">}</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div class="codetool" id="codetool">
<div class="code_n">
<textarea></textarea>
</div>
</div>
</div>
<p>
最后出来的结果是:</p>
<p>
21:18:39</p>
<p>
21:18:39</p>
<p>
和最初想法不一致。</p>
<p>
查阅localtime的文档,发现这段话:</p>
<p>
This structure is statically allocated and shared by the functions gmtime and localtime. Each time either one of these functions is called the content of this structure is overwritten.</p>
<p>
也就是说每次只能同时使用localtime()函数一次,要不就会被重写!</p>
<p>
The localtime() function need not be reentrant. A function that is not required to be reentrant is not required to be thread-safe.</p>
<p>
因此localtime()不是可重入的。同时libc里提供了一个可重入版的函数localtime_r();</p>
<p>
Unlike localtime(), the reentrant version is not required to set tzname。</p>
<p>
修改程序:(localtime_r())</p>
<div class="jb51code">
<div>
<div class="syntaxhighlightercpp" id="highlighter_304450">
<div class="toolbar">
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
<div class="line number1 index0 alt2">
1</div>
<div class="line number2 index1 alt1">
2</div>
<div class="line number3 index2 alt2">
3</div>
<div class="line number4 index3 alt1">
4</div>
<div class="line number5 index4 alt2">
5</div>
<div class="line number6 index5 alt1">
6</div>
<div class="line number7 index6 alt2">
7</div>
<div class="line number8 index7 alt1">
8</div>
<div class="line number9 index8 alt2">
9</div>
<div class="line number10 index9 alt1">
10</div>
<div class="line number11 index10 alt2">
11</div>
<div class="line number12 index11 alt1">
12</div>
<div class="line number13 index12 alt2">
13</div>
<div class="line number14 index13 alt1">
14</div>
<div class="line number15 index14 alt2">
15</div>
<div class="line number16 index15 alt1">
16</div>
<div class="line number17 index16 alt2">
17</div>
<div class="line number18 index17 alt1">
18</div>
<div class="line number19 index18 alt2">
19</div>
<div class="line number20 index19 alt1">
20</div>
<div class="line number21 index20 alt2">
21</div>
<div class="line number22 index21 alt1">
22</div>
<div class="line number23 index22 alt2">
23</div>
<div class="line number24 index23 alt1">
24</div>
<div class="line number25 index24 alt2">
25</div>
<div class="line number26 index25 alt1">
26</div>
<div class="line number27 index26 alt2">
27</div>
<div class="line number28 index27 alt1">
28</div>
<div class="line number29 index28 alt2">
29</div>
<div class="line number30 index29 alt1">
30</div>
<div class="line number31 index30 alt2">
31</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2">
<code class="cpp preprocessor">#include <cstdlib> </code>
</div>
<div class="line number2 index1 alt1">
<code class="cpp preprocessor">#include <iostream> </code>
</div>
<div class="line number3 index2 alt2">
<code class="cpp preprocessor">#include <time.h> </code>
</div>
<div class="line number4 index3 alt1">
<code class="cpp preprocessor">#include <stdio.h> </code>
</div>
<div class="line number5 index4 alt2">
<code class="cpp spaces"> </code>
</div>
<div class="line number6 index5 alt1">
<code class="cpp keyword bold">using</code> <code class="cpp keyword bold">namespace</code> <code class="cpp plain">std; </code>
</div>
<div class="line number7 index6 alt2">
<code class="cpp spaces"> </code>
</div>
<div class="line number8 index7 alt1">
<code class="cpp color1 bold">int</code> <code class="cpp plain">main(</code><code class="cpp color1 bold">int</code> <code class="cpp plain">argc, </code><code class="cpp color1 bold">char</code> <code class="cpp plain">*argv[]) </code>
</div>
<div class="line number9 index8 alt2">
<code class="cpp plain">{ </code>
</div>
<div class="line number10 index9 alt1">
<code class="cpp spaces"> </code><code class="cpp color1 bold">time_t</code> <code class="cpp plain">tNow =</code><code class="cpp functions bold">time</code><code class="cpp plain">(NULL); </code>
</div>
<div class="line number11 index10 alt2">
<code class="cpp spaces"> </code><code class="cpp color1 bold">time_t</code> <code class="cpp plain">tEnd = tNow + 1800; </code>
</div>
<div class="line number12 index11 alt1">
<code class="cpp spaces"> </code>
</div>
<div class="line number13 index12 alt2">
<code class="cpp spaces"> </code><code class="cpp comments">//在这里修改程序 </code>
</div>
<div class="line number14 index13 alt1">
<code class="cpp spaces"> </code><code class="cpp comments">//struct tm* ptm = localtime(&tNow); </code>
</div>
<div class="line number15 index14 alt2">
<code class="cpp spaces"> </code><code class="cpp comments">//struct tm* ptmEnd = localtime(&tEnd); </code>
</div>
<div class="line number16 index15 alt1">
<code class="cpp spaces"> </code><code class="cpp keyword bold">struct</code> <code class="cpp color1 bold">tm</code> <code class="cpp plain">ptm = { 0 }; </code>
</div>
<div class="line number17 index16 alt2">
<code class="cpp spaces"> </code><code class="cpp keyword bold">struct</code> <code class="cpp color1 bold">tm</code> <code class="cpp plain">ptmEnd = { 0 }; </code>
</div>
<div class="line number18 index17 alt1">
<code class="cpp spaces"> </code><code class="cpp plain">localtime_r(&tNow, &ptm); </code>
</div>
<div class="line number19 index18 alt2">
<code class="cpp spaces"> </code><code class="cpp plain">localtime_r(&tEnd, &ptmEnd); </code>
</div>
<div class="line number20 index19 alt1">
<code class="cpp spaces"> </code>
</div>
<div class="line number21 index20 alt2">
<code class="cpp spaces"> </code><code class="cpp color1 bold">char</code> <code class="cpp plain">szTmp = {0}; </code>
</div>
<div class="line number22 index21 alt1">
<code class="cpp spaces"> </code><code class="cpp functions bold">strftime</code><code class="cpp plain">(szTmp,50,</code><code class="cpp string">"%H:%M:%S"</code><code class="cpp plain">,&ptm); </code>
</div>
<div class="line number23 index22 alt2">
<code class="cpp spaces"> </code><code class="cpp color1 bold">char</code> <code class="cpp plain">szEnd = {0}; </code>
</div>
<div class="line number24 index23 alt1">
<code class="cpp spaces"> </code><code class="cpp functions bold">strftime</code><code class="cpp plain">(szEnd,50,</code><code class="cpp string">"%H:%M:%S"</code><code class="cpp plain">,&ptmEnd); </code>
</div>
<div class="line number25 index24 alt2">
<code class="cpp spaces"> </code><code class="cpp functions bold">printf</code><code class="cpp plain">(</code><code class="cpp string">"%s /n"</code><code class="cpp plain">,szTmp); </code>
</div>
<div class="line number26 index25 alt1">
<code class="cpp spaces"> </code><code class="cpp functions bold">printf</code><code class="cpp plain">(</code><code class="cpp string">"%s /n"</code><code class="cpp plain">,szEnd); </code>
</div>
<div class="line number27 index26 alt2">
<code class="cpp spaces"> </code>
</div>
<div class="line number28 index27 alt1">
<code class="cpp spaces"> </code>
</div>
<div class="line number29 index28 alt2">
<code class="cpp spaces"> </code><code class="cpp functions bold">system</code><code class="cpp plain">(</code><code class="cpp string">"PAUSE"</code><code class="cpp plain">); </code>
</div>
<div class="line number30 index29 alt1">
<code class="cpp spaces"> </code><code class="cpp keyword bold">return</code> <code class="cpp plain">EXIT_SUCCESS; </code>
</div>
<div class="line number31 index30 alt2">
<code class="cpp plain">}</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div class="codetool" id="codetool">
<div class="code_n">
<textarea></textarea>
</div>
</div>
</div>
<p>
最后出来的结果是:</p>
<p>
10:29:06<br>
10:59:06</p>
<p>
<strong>tm</strong></p>
<div class="jb51code">
<div>
<div class="syntaxhighlightercpp" id="highlighter_421399">
<div class="toolbar">
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
<div class="line number1 index0 alt2">
1</div>
<div class="line number2 index1 alt1">
2</div>
<div class="line number3 index2 alt2">
3</div>
<div class="line number4 index3 alt1">
4</div>
<div class="line number5 index4 alt2">
5</div>
<div class="line number6 index5 alt1">
6</div>
<div class="line number7 index6 alt2">
7</div>
<div class="line number8 index7 alt1">
8</div>
<div class="line number9 index8 alt2">
9</div>
<div class="line number10 index9 alt1">
10</div>
<div class="line number11 index10 alt2">
11</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2">
<code class="cpp keyword bold">struct</code> <code class="cpp color1 bold">tm</code> <code class="cpp plain">{</code>
</div>
<div class="line number2 index1 alt1">
<code class="cpp spaces"> </code><code class="cpp color1 bold">int</code> <code class="cpp plain">tm_sec; </code><code class="cpp comments">/* 秒 – 取值区间为 */</code>
</div>
<div class="line number3 index2 alt2">
<code class="cpp spaces"> </code><code class="cpp color1 bold">int</code> <code class="cpp plain">tm_min; </code><code class="cpp comments">/* 分 - 取值区间为 */</code>
</div>
<div class="line number4 index3 alt1">
<code class="cpp spaces"> </code><code class="cpp color1 bold">int</code> <code class="cpp plain">tm_hour; </code><code class="cpp comments">/* 时 - 取值区间为 */</code>
</div>
<div class="line number5 index4 alt2">
<code class="cpp spaces"> </code><code class="cpp color1 bold">int</code> <code class="cpp plain">tm_mday; </code><code class="cpp comments">/* 一个月中的日期 - 取值区间为 */</code>
</div>
<div class="line number6 index5 alt1">
<code class="cpp spaces"> </code><code class="cpp color1 bold">int</code> <code class="cpp plain">tm_mon; </code><code class="cpp comments">/* 月份(从一月开始,0代表一月) - 取值区间为 */</code>
</div>
<div class="line number7 index6 alt2">
<code class="cpp spaces"> </code><code class="cpp color1 bold">int</code> <code class="cpp plain">tm_year; </code><code class="cpp comments">/* 年份,其值等于实际年份减去1900 */</code>
</div>
<div class="line number8 index7 alt1">
<code class="cpp spaces"> </code><code class="cpp color1 bold">int</code> <code class="cpp plain">tm_wday; </code><code class="cpp comments">/* 星期 – 取值区间为,其中0代表星期天,1代表星期一 */</code>
</div>
<div class="line number9 index8 alt2">
<code class="cpp spaces"> </code><code class="cpp color1 bold">int</code> <code class="cpp plain">tm_yday; </code><code class="cpp comments">/* 从每年1月1日开始的天数– 取值区间,其中0代表1月1日 */</code>
</div>
<div class="line number10 index9 alt1">
<code class="cpp spaces"> </code><code class="cpp color1 bold">int</code> <code class="cpp plain">tm_isdst; </code><code class="cpp comments">/* 夏令时标识符,夏令时tm_isdst为正;不实行夏令时tm_isdst为0 */</code>
</div>
<div class="line number11 index10 alt2">
<code class="cpp spaces"> </code><code class="cpp plain">};</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div class="codetool" id="codetool">
<div class="code_n">
<textarea></textarea>
</div>
</div>
</div>
<p>
<strong>time 函数</strong></p>
<p>
返回:1970-1-1, 00:00:00以来经过的秒数</p>
<p>
原型: time_t time(time_t *calptr) </p>
<p>
结果可以通过返回值,也可以通过参数得到,见实例</p>
<p>
头文件 <time.h></p>
<p>
返回值: </p>
<p>
成功:秒数,从1970-1-1,00:00:00 可以当成整型输出或用于其它函数</p>
<p>
失败:-1</p>
<p>
例:</p>
<div class="jb51code">
<div>
<div class="syntaxhighlightercpp" id="highlighter_482238">
<div class="toolbar">
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
<div class="line number1 index0 alt2">
1</div>
<div class="line number2 index1 alt1">
2</div>
<div class="line number3 index2 alt2">
3</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2">
<code class="cpp color1 bold">time_t</code> <code class="cpp plain">now;</code>
</div>
<div class="line number2 index1 alt1">
<code class="cpp functions bold">time</code><code class="cpp plain">(&now);</code><code class="cpp comments">// 等同于now = time(NULL)</code>
</div>
<div class="line number3 index2 alt2">
<code class="cpp functions bold">printf</code><code class="cpp plain">(</code><code class="cpp string">"now time is %d\n"</code><code class="cpp plain">, now);</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div class="codetool" id="codetool">
<div class="code_n">
<textarea></textarea>
</div>
</div>
</div>
<p>
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。</p>
<p>
原文链接:http://www.cnblogs.com/fnlingnzb-learner/p/5985822.html</p>
頁:
[1]