﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-Archangelsy-文章分类-安全</title><link>http://www.blogjava.net/Archangelsy/category/20562.html</link><description>LSY</description><language>zh-cn</language><lastBuildDate>Tue, 24 Apr 2007 06:37:45 GMT</lastBuildDate><pubDate>Tue, 24 Apr 2007 06:37:45 GMT</pubDate><ttl>60</ttl><item><title>ASN1_TIME 和 time_t转换（转）</title><link>http://www.blogjava.net/Archangelsy/articles/112830.html</link><dc:creator>archangel</dc:creator><author>archangel</author><pubDate>Sun, 22 Apr 2007 14:48:00 GMT</pubDate><guid>http://www.blogjava.net/Archangelsy/articles/112830.html</guid><wfw:comment>http://www.blogjava.net/Archangelsy/comments/112830.html</wfw:comment><comments>http://www.blogjava.net/Archangelsy/articles/112830.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Archangelsy/comments/commentRss/112830.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Archangelsy/services/trackbacks/112830.html</trackback:ping><description><![CDATA[
		<span lang="EN-US">Openssl</span>
		<span style="FONT-FAMILY: 宋体">代码中提供了函数</span>
		<span lang="EN-US">ASN1_TIME_set</span>
		<span style="FONT-FAMILY: 宋体">，把</span>
		<span lang="EN-US">time_t</span>
		<span style="FONT-FAMILY: 宋体">格式的时间转化为</span>
		<span lang="EN-US">ASN1_TIME</span>
		<p class="MsoNormal">
				<span style="FONT-FAMILY: 宋体">函数原型为</span>
		</p>
		<p class="MsoNormal">
				<span lang="EN-US" style="COLOR: blue">ASN1_TIME *ASN1_TIME_set(ASN1_TIME *s, time_t t)<?XML:NAMESPACE PREFIX = O /?><o:p></o:p></span>
		</p>
		<p class="MsoNormal">
				<span lang="EN-US">
						<o:p>
						</o:p>
				</span>
		</p>
		<p class="MsoNormal">
				<span style="FONT-FAMILY: 宋体">但是没<span style="COLOR: black">有找到类似</span></span>
				<span lang="EN-US" style="COLOR: black">ASN1_TIME_get</span>
				<span style="COLOR: black; FONT-FAMILY: 宋体">函数，把</span>
				<span lang="EN-US" style="COLOR: black">ASN1_TIME</span>
				<span style="COLOR: black; FONT-FAMILY: 宋体">转化为</span>
				<span lang="EN-US" style="COLOR: black">time_t<o:p></o:p></span>
		</p>
		<p class="MsoNormal">
				<span lang="EN-US" style="COLOR: black">
						<o:p>
						</o:p>
				</span>
		</p>
		<p class="MsoNormal">
				<span style="COLOR: black; FONT-FAMILY: 宋体">从网上找个代码，实现了</span>
				<span lang="EN-US" style="COLOR: black">ASN1_TIME_get</span>
				<span style="COLOR: black; FONT-FAMILY: 宋体">，测试结果正确。</span>
				<span lang="EN-US" style="COLOR: black">[win2003 VC6 </span>
				<span style="COLOR: black; FONT-FAMILY: 宋体">下测试通过</span>
				<span lang="EN-US" style="COLOR: black">]<o:p></o:p></span>
		</p>
		<p class="MsoNormal">
				<span lang="EN-US" style="COLOR: black">
						<o:p>
						</o:p>
				</span>
		</p>
		<p class="MsoNormal">
				<span style="COLOR: black; FONT-FAMILY: 宋体">代码：</span>
				<span lang="EN-US" style="COLOR: black">
						<o:p>
						</o:p>
				</span>
		</p>
		<p class="MsoNormal" style="TEXT-ALIGN: left" align="left">
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray">
						<o:p>
						</o:p>
				</span>
		</p>
		<p class="MsoNormal" style="TEXT-ALIGN: left" align="left">
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: blue">int</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray"> mypint( </span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: blue">const</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray">
				</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: blue">char</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray"> ** s,<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="TEXT-ALIGN: left" align="left">
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray">
						<span>
						</span>
						<span>
						</span>
				</span>
				<span lang="FR" style="FONT-SIZE: 12pt; COLOR: blue">int</span>
				<span lang="FR" style="FONT-SIZE: 12pt; COLOR: gray">
						<span>
						</span>
						<span>
						</span>
						<span>
						</span>n,<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="TEXT-ALIGN: left" align="left">
				<span lang="FR" style="FONT-SIZE: 12pt; COLOR: gray">
						<span>
						</span>
						<span>
						</span>
				</span>
				<span lang="FR" style="FONT-SIZE: 12pt; COLOR: blue">int</span>
				<span lang="FR" style="FONT-SIZE: 12pt; COLOR: gray">
						<span>
						</span>
						<span>
						</span>
						<span>
						</span>min,<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="TEXT-ALIGN: left" align="left">
				<span lang="FR" style="FONT-SIZE: 12pt; COLOR: gray">
						<span>
						</span>
						<span>
						</span>
				</span>
				<span lang="FR" style="FONT-SIZE: 12pt; COLOR: blue">int</span>
				<span lang="FR" style="FONT-SIZE: 12pt; COLOR: gray">
						<span>
						</span>
						<span>
						</span>
						<span>
						</span>max,<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="TEXT-ALIGN: left" align="left">
				<span lang="FR" style="FONT-SIZE: 12pt; COLOR: gray">
						<span>
						</span>
						<span>
						</span>
				</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: blue">int</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray"> * e<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="TEXT-ALIGN: left" align="left">
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray">
						<span>
						</span>
						<span>
						</span>)<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="TEXT-ALIGN: left" align="left">
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray">{<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="TEXT-ALIGN: left" align="left">
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray">
						<span>
						</span>
				</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: blue">int</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray"> retval = 0;<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="TEXT-ALIGN: left" align="left">
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray">
						<span>
						</span>
				</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: blue">while</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray"> (n) {<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="TEXT-ALIGN: left" align="left">
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray">
						<span>
						</span>
				</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: blue">if</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray"> (**s &lt; '0' || **s &gt; '9') { *e = 1; </span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: blue">return</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray"> 0; }<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="TEXT-ALIGN: left" align="left">
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray">
						<span>
						</span>retval *= 10;<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="TEXT-ALIGN: left" align="left">
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray">
						<span>
						</span>retval += **s - '0';<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="TEXT-ALIGN: left" align="left">
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray">
						<span>
						</span>--n; ++(*s);<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="TEXT-ALIGN: left" align="left">
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray">
						<span>
						</span>}<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="TEXT-ALIGN: left" align="left">
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray">
						<span>
						</span>
				</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: blue">if</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray"> (retval &lt; min || retval &gt; max) *e = 1;<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="TEXT-ALIGN: left" align="left">
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray">
						<span>
						</span>
				</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: blue">return</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray"> retval;<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="TEXT-ALIGN: left" align="left">
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray">}<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="TEXT-ALIGN: left" align="left">
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray">
						<o:p>
						</o:p>
				</span>
		</p>
		<p class="MsoNormal" style="TEXT-ALIGN: left" align="left">
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: blue">time_t</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray">
						<span>
						</span>ASN1_TIME_get (</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: blue">ASN1_TIME</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray"> * a,<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="TEXT-ALIGN: left" align="left">
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray">
						<span>
						</span>
						<span>
						</span>
				</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: blue">int</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray"> *<span></span>err<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="TEXT-ALIGN: left" align="left">
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray">
						<span>
						</span>
						<span>
						</span>)<span></span><o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="TEXT-ALIGN: left" align="left">
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray">{<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="TEXT-ALIGN: left" align="left">
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray">
						<span>
						</span>
				</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: blue">char</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray"> days[2][12] = <o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="TEXT-ALIGN: left" align="left">
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray">
						<span>
						</span>{<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="TEXT-ALIGN: left" align="left">
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray">
						<span>
						</span>{ 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 },<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="TEXT-ALIGN: left" align="left">
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray">
						<span>
						</span>{ 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="TEXT-ALIGN: left" align="left">
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray">
						<span>
						</span>};<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="TEXT-ALIGN: left" align="left">
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray">
						<span>
						</span>
						<span>
						</span>
				</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: blue">int</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray"> dummy;<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="TEXT-ALIGN: left" align="left">
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray">
						<span>
						</span>
				</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: blue">const</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray">
				</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: blue">char</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray"> *s;<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="TEXT-ALIGN: left" align="left">
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray">
						<span>
						</span>
				</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: blue">int</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray"> generalized;<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="TEXT-ALIGN: left" align="left">
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray">
						<span>
						</span>
				</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: blue">struct</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray"> tm t;<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="TEXT-ALIGN: left" align="left">
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray">
						<span>
						</span>
				</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: blue">int</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray"> i, year, isleap, offset;<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="TEXT-ALIGN: left" align="left">
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray">
						<span>
						</span>
				</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: blue">time_t</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray"> retval;<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="TEXT-ALIGN: left" align="left">
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray">
						<span>
						</span>
						<o:p>
						</o:p>
				</span>
		</p>
		<p class="MsoNormal" style="TEXT-ALIGN: left" align="left">
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray">
						<span>
						</span>
				</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: blue">if</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray"> (err == NULL) err = &amp;dummy;<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="TEXT-ALIGN: left" align="left">
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray">
						<span>
						</span>
				</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: blue">if</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray"> (a-&gt;type == V_ASN1_GENERALIZEDTIME) {<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="TEXT-ALIGN: left" align="left">
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray">
						<span>
						</span>generalized = 1;<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="TEXT-ALIGN: left" align="left">
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray">
						<span>
						</span>} </span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: blue">else</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray">
				</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: blue">if</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray"> (a-&gt;type == V_ASN1_UTCTIME) {<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="TEXT-ALIGN: left" align="left">
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray">
						<span>
						</span>generalized = 0;<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="TEXT-ALIGN: left" align="left">
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray">
						<span>
						</span>} </span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: blue">else</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray"> {<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="TEXT-ALIGN: left" align="left">
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray">
						<span>
						</span>*err = 1;<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="TEXT-ALIGN: left" align="left">
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray">
						<span>
						</span>
				</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: blue">return</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray"> 0;<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="TEXT-ALIGN: left" align="left">
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray">
						<span>
						</span>}<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="TEXT-ALIGN: left" align="left">
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray">
						<span>
						</span>s = a-&gt;data; </span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: green">// Data should be always null terminated</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray">
						<o:p>
						</o:p>
				</span>
		</p>
		<p class="MsoNormal" style="TEXT-ALIGN: left" align="left">
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray">
						<span>
						</span>
				</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: blue">if</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray"> (s == NULL || s[a-&gt;length] != '\0') {<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="TEXT-ALIGN: left" align="left">
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray">
						<span>
						</span>*err = 1;<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="TEXT-ALIGN: left" align="left">
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray">
						<span>
						</span>
				</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: blue">return</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray"> 0;<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="TEXT-ALIGN: left" align="left">
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray">
						<span>
						</span>}<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="TEXT-ALIGN: left" align="left">
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray">
						<span>
						</span>
						<o:p>
						</o:p>
				</span>
		</p>
		<p class="MsoNormal" style="TEXT-ALIGN: left" align="left">
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray">
						<span>
						</span>*err = 0;<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="TEXT-ALIGN: left" align="left">
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray">
						<span>
						</span>
				</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: blue">if</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray"> (generalized) {<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="TEXT-ALIGN: left" align="left">
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray">
						<span>
						</span>t.tm_year = mypint(&amp;s, 4, 0, 9999, err) - 1900;<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="TEXT-ALIGN: left" align="left">
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray">
						<span>
						</span>} </span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: blue">else</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray"> {<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="TEXT-ALIGN: left" align="left">
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray">
						<span>
						</span>t.tm_year = mypint(&amp;s, 2, 0, 99, err);<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="TEXT-ALIGN: left" align="left">
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray">
						<span>
						</span>
				</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: blue">if</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray"> (t.tm_year &lt; 50) t.tm_year += 100;<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="TEXT-ALIGN: left" align="left">
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray">
						<span>
						</span>}<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="TEXT-ALIGN: left" align="left">
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray">
						<span>
						</span>t.tm_mon = mypint(&amp;s, 2, 1, 12, err) - 1;<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="TEXT-ALIGN: left" align="left">
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray">
						<span>
						</span>t.tm_mday = mypint(&amp;s, 2, 1, 31, err);<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="TEXT-ALIGN: left" align="left">
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray">
						<span>
						</span>
				</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: green">// NOTE: It's not yet clear, if this implementation is 100% correct</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray">
						<o:p>
						</o:p>
				</span>
		</p>
		<p class="MsoNormal" style="TEXT-ALIGN: left" align="left">
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray">
						<span>
						</span>
				</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: green">// for GeneralizedTime... but at least misinterpretation is</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray">
						<o:p>
						</o:p>
				</span>
		</p>
		<p class="MsoNormal" style="TEXT-ALIGN: left" align="left">
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray">
						<span>
						</span>
				</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: green">// impossible --- we just throw an exception</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray">
						<o:p>
						</o:p>
				</span>
		</p>
		<p class="MsoNormal" style="TEXT-ALIGN: left" align="left">
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray">
						<span>
						</span>t.tm_hour = mypint(&amp;s, 2, 0, 23, err);<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="TEXT-ALIGN: left" align="left">
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray">
						<span>
						</span>t.tm_min = mypint(&amp;s, 2, 0, 59, err);<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="TEXT-ALIGN: left" align="left">
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray">
						<span>
						</span>
				</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: blue">if</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray"> (*s &gt;= '0' &amp;&amp; *s &lt;= '9') {<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="TEXT-ALIGN: left" align="left">
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray">
						<span>
						</span>t.tm_sec = mypint(&amp;s, 2, 0, 59, err);<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="TEXT-ALIGN: left" align="left">
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray">
						<span>
						</span>} </span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: blue">else</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray"> {<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="TEXT-ALIGN: left" align="left">
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray">
						<span>
						</span>t.tm_sec = 0;<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="TEXT-ALIGN: left" align="left">
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray">
						<span>
						</span>}<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="TEXT-ALIGN: left" align="left">
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray">
						<span>
						</span>
				</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: blue">if</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray"> (*err) </span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: blue">return</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray"> 0; </span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: green">// Format violation</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray">
						<o:p>
						</o:p>
				</span>
		</p>
		<p class="MsoNormal" style="TEXT-ALIGN: left" align="left">
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray">
						<span>
						</span>
				</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: blue">if</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray"> (generalized) {<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="TEXT-ALIGN: left" align="left">
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray">
						<span>
						</span>
				</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: green">// skip fractional seconds if any</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray">
						<o:p>
						</o:p>
				</span>
		</p>
		<p class="MsoNormal" style="TEXT-ALIGN: left" align="left">
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray">
						<span>
						</span>
				</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: blue">while</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray"> (*s == '.' || *s == ',' || (*s &gt;= '0' &amp;&amp; *s &lt;= '9')) ++s;<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="TEXT-ALIGN: left" align="left">
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray">
						<span>
						</span>
				</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: green">// special treatment for local time</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray">
						<o:p>
						</o:p>
				</span>
		</p>
		<p class="MsoNormal" style="TEXT-ALIGN: left" align="left">
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray">
						<span>
						</span>
				</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: blue">if</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray"> (*s == 0) {<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="TEXT-ALIGN: left" align="left">
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray">
						<span>
						</span>t.tm_isdst = -1;<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="TEXT-ALIGN: left" align="left">
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray">
						<span>
						</span>retval = mktime(&amp;t); </span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: green">// Local time is easy :)</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray">
						<o:p>
						</o:p>
				</span>
		</p>
		<p class="MsoNormal" style="TEXT-ALIGN: left" align="left">
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray">
						<span>
						</span>
				</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: blue">if</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray"> (retval == (time_t)-1) {<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="TEXT-ALIGN: left" align="left">
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray">
						<span>
						</span>*err = 2;<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="TEXT-ALIGN: left" align="left">
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray">
						<span>
						</span>retval = 0;<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="TEXT-ALIGN: left" align="left">
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray">
						<span>
						</span>}<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="TEXT-ALIGN: left" align="left">
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray">
						<span>
						</span>
				</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: blue">return</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray"> retval;<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="TEXT-ALIGN: left" align="left">
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray">
						<span>
						</span>}<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="TEXT-ALIGN: left" align="left">
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray">
						<span>
						</span>}<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="TEXT-ALIGN: left" align="left">
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray">
						<span>
						</span>
				</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: blue">if</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray"> (*s == 'Z') {<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="TEXT-ALIGN: left" align="left">
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray">
						<span>
						</span>offset = 0;<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="TEXT-ALIGN: left" align="left">
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray">
						<span>
						</span>++s;<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="TEXT-ALIGN: left" align="left">
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray">
						<span>
						</span>} </span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: blue">else</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray">
				</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: blue">if</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray"> (*s == '-' || *s == '+') {<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="TEXT-ALIGN: left" align="left">
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray">
						<span>
						</span>i = (*s++ == '-');<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="TEXT-ALIGN: left" align="left">
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray">
						<span>
						</span>offset = mypint(&amp;s, 2, 0, 12, err);<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="TEXT-ALIGN: left" align="left">
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray">
						<span>
						</span>offset *= 60;<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="TEXT-ALIGN: left" align="left">
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray">
						<span>
						</span>offset += mypint(&amp;s, 2, 0, 59, err);<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="TEXT-ALIGN: left" align="left">
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray">
						<span>
						</span>
				</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: blue">if</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray"> (*err) </span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: blue">return</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray"> 0; </span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: green">// Format violation</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray">
						<o:p>
						</o:p>
				</span>
		</p>
		<p class="MsoNormal" style="TEXT-ALIGN: left" align="left">
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray">
						<span>
						</span>
				</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: blue">if</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray"> (i) offset = -offset;<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="TEXT-ALIGN: left" align="left">
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray">
						<span>
						</span>} </span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: blue">else</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray"> {<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="TEXT-ALIGN: left" align="left">
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray">
						<span>
						</span>*err = 1;<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="TEXT-ALIGN: left" align="left">
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray">
						<span>
						</span>
				</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: blue">return</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray"> 0;<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="TEXT-ALIGN: left" align="left">
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray">
						<span>
						</span>}<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="TEXT-ALIGN: left" align="left">
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray">
						<span>
						</span>
				</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: blue">if</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray"> (*s) {<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="TEXT-ALIGN: left" align="left">
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray">
						<span>
						</span>*err = 1;<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="TEXT-ALIGN: left" align="left">
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray">
						<span>
						</span>
				</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: blue">return</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray"> 0;<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="TEXT-ALIGN: left" align="left">
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray">
						<span>
						</span>}<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="TEXT-ALIGN: left" align="left">
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray">
						<span>
						</span>
						<o:p>
						</o:p>
				</span>
		</p>
		<p class="MsoNormal" style="TEXT-ALIGN: left" align="left">
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray">
						<span>
						</span>
				</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: green">// And here comes the hard part --- there's no standard function to</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray">
						<o:p>
						</o:p>
				</span>
		</p>
		<p class="MsoNormal" style="TEXT-ALIGN: left" align="left">
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray">
						<span>
						</span>
				</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: green">// convert struct tm containing UTC time into time_t without</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray">
						<o:p>
						</o:p>
				</span>
		</p>
		<p class="MsoNormal" style="TEXT-ALIGN: left" align="left">
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray">
						<span>
						</span>
				</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: green">// messing global timezone settings (breaks multithreading and may</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray">
						<o:p>
						</o:p>
				</span>
		</p>
		<p class="MsoNormal" style="TEXT-ALIGN: left" align="left">
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray">
						<span>
						</span>
				</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: green">// cause other problems) and thus we have to do this "by hand"</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray">
						<o:p>
						</o:p>
				</span>
		</p>
		<p class="MsoNormal" style="TEXT-ALIGN: left" align="left">
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray">
						<span>
						</span>
				</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: green">// </span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray">
						<o:p>
						</o:p>
				</span>
		</p>
		<p class="MsoNormal" style="TEXT-ALIGN: left" align="left">
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray">
						<span>
						</span>
				</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: green">// NOTE: Overflow check does not detect too big overflows, but is</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray">
						<o:p>
						</o:p>
				</span>
		</p>
		<p class="MsoNormal" style="TEXT-ALIGN: left" align="left">
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray">
						<span>
						</span>
				</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: green">// sufficient thanks to the fact that year numbers are limited to four</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray">
						<o:p>
						</o:p>
				</span>
		</p>
		<p class="MsoNormal" style="TEXT-ALIGN: left" align="left">
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray">
						<span>
						</span>
				</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: green">// digit non-negative values.</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray">
						<o:p>
						</o:p>
				</span>
		</p>
		<p class="MsoNormal" style="TEXT-ALIGN: left" align="left">
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray">
						<span>
						</span>retval = t.tm_sec;<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="TEXT-ALIGN: left" align="left">
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray">
						<span>
						</span>retval += (t.tm_min - offset) * 60;<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="TEXT-ALIGN: left" align="left">
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray">
						<span>
						</span>retval += t.tm_hour * 3600;<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="TEXT-ALIGN: left" align="left">
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray">
						<span>
						</span>retval += (t.tm_mday - 1) * 86400;<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="TEXT-ALIGN: left" align="left">
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray">
						<span>
						</span>year = t.tm_year + 1900;<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="TEXT-ALIGN: left" align="left">
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray">
						<span>
						</span>
						<span>
						</span>
				</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: blue">if</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray"> (</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: blue">sizeof</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray">(time_t) == 4) {<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="TEXT-ALIGN: left" align="left">
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray">
						<span>
						</span>
				</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: green">// This is just to avoid too big overflows being undetected, finer</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray">
						<o:p>
						</o:p>
				</span>
		</p>
		<p class="MsoNormal" style="TEXT-ALIGN: left" align="left">
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray">
						<span>
						</span>
				</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: green">// overflow detection is done below.</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray">
						<o:p>
						</o:p>
				</span>
		</p>
		<p class="MsoNormal" style="TEXT-ALIGN: left" align="left">
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray">
						<span>
						</span>
				</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: blue">if</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray"> (year &lt; 1900 || year &gt; 2040) *err = 2;<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="TEXT-ALIGN: left" align="left">
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray">
						<span>
						</span>}<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="TEXT-ALIGN: left" align="left">
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray">
						<span>
						</span>
				</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: green">// FIXME: Does POSIX really say, that all years divisible by 4 are</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray">
						<o:p>
						</o:p>
				</span>
		</p>
		<p class="MsoNormal" style="TEXT-ALIGN: left" align="left">
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray">
						<span>
						</span>
				</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: green">// leap years (for consistency)??? Fortunately, this problem does</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray">
						<o:p>
						</o:p>
				</span>
		</p>
		<p class="MsoNormal" style="TEXT-ALIGN: left" align="left">
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray">
						<span>
						</span>
				</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: green">// not exist for 32-bit time_t and we should'nt be worried about</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray">
						<o:p>
						</o:p>
				</span>
		</p>
		<p class="MsoNormal" style="TEXT-ALIGN: left" align="left">
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray">
						<span>
						</span>
				</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: green">// this until the year of 2100 :)</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray">
						<o:p>
						</o:p>
				</span>
		</p>
		<p class="MsoNormal" style="TEXT-ALIGN: left" align="left">
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray">
						<span>
						</span>isleap = ((year % 4 == 0) &amp;&amp; (year % 100 != 0)) || (year % 400 == 0);<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="TEXT-ALIGN: left" align="left">
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray">
						<span>
						</span>
				</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: blue">for</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray"> (i = t.tm_mon - 1; i &gt;= 0; --i) retval += days[isleap][i] * 86400;<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="TEXT-ALIGN: left" align="left">
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray">
						<span>
						</span>retval += (year - 1970) * 31536000;<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="TEXT-ALIGN: left" align="left">
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray">
						<span>
						</span>
				</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: blue">if</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray"> (year &lt; 1970) {<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="TEXT-ALIGN: left" align="left">
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray">
						<span>
						</span>retval -= ((1970 - year + 2) / 4) * 86400;<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="TEXT-ALIGN: left" align="left">
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray">
						<span>
						</span>
				</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: blue">if</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray"> (</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: blue">sizeof</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray">(time_t) &gt; 4) {<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="TEXT-ALIGN: left" align="left">
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray">
						<span>
						</span>
						<span>
						</span>
				</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: blue">for</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray"> (i = 1900; i &gt;= year; i -= 100) {<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="TEXT-ALIGN: left" align="left">
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray">
						<span>
						</span>
				</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: blue">if</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray"> (i % 400 == 0) </span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: blue">continue</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray">;<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="TEXT-ALIGN: left" align="left">
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray">
						<span>
						</span>retval += 86400;<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="TEXT-ALIGN: left" align="left">
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray">
						<span>
						</span>}<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="TEXT-ALIGN: left" align="left">
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray">
						<span>
						</span>}<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="TEXT-ALIGN: left" align="left">
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray">
						<span>
						</span>
				</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: blue">if</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray"> (retval &gt;= 0) *err = 2;<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="TEXT-ALIGN: left" align="left">
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray">
						<span>
						</span>} </span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: blue">else</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray"> {<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="TEXT-ALIGN: left" align="left">
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray">
						<span>
						</span>retval += ((year - 1970 + 1) / 4) * 86400;<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="TEXT-ALIGN: left" align="left">
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray">
						<span>
						</span>
				</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: blue">if</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray"> (</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: blue">sizeof</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray">(time_t) &gt; 4) {<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="TEXT-ALIGN: left" align="left">
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray">
						<span>
						</span>
				</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: blue">for</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray"> (i = 2100; i &lt; year; i += 100) {<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="TEXT-ALIGN: left" align="left">
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray">
						<span>
						</span>
				</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: green">// The following condition is the reason to</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray">
						<o:p>
						</o:p>
				</span>
		</p>
		<p class="MsoNormal" style="TEXT-ALIGN: left" align="left">
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray">
						<span>
						</span>
				</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: green">// start with 2100 instead of 2000</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray">
						<o:p>
						</o:p>
				</span>
		</p>
		<p class="MsoNormal" style="TEXT-ALIGN: left" align="left">
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray">
						<span>
						</span>
				</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: blue">if</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray"> (i % 400 == 0) </span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: blue">continue</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray">;<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="TEXT-ALIGN: left" align="left">
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray">
						<span>
						</span>retval -= 86400;<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="TEXT-ALIGN: left" align="left">
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray">
						<span>
						</span>}<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="TEXT-ALIGN: left" align="left">
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray">
						<span>
						</span>}<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="TEXT-ALIGN: left" align="left">
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray">
						<span>
						</span>
				</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: blue">if</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray"> (retval &lt; 0) *err = 2;<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="TEXT-ALIGN: left" align="left">
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray">
						<span>
						</span>}<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="TEXT-ALIGN: left" align="left">
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray">
						<o:p>
						</o:p>
				</span>
		</p>
		<p class="MsoNormal" style="TEXT-ALIGN: left" align="left">
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray">
						<span>
						</span>
				</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: blue">if</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray"> (*err) retval = 0;<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="TEXT-ALIGN: left" align="left">
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray">
						<span>
						</span>
				</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: blue">return</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray"> retval;<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="TEXT-ALIGN: left" align="left">
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: gray">}<o:p></o:p></span>
		</p>
		<p class="MsoNormal">
				<span lang="EN-US">
						<o:p>
						</o:p>
				</span>
		</p>
		<p class="MsoNormal">
				<span lang="EN-US">
						<o:p>
						</o:p>
				</span>
		</p>
<img src ="http://www.blogjava.net/Archangelsy/aggbug/112830.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Archangelsy/" target="_blank">archangel</a> 2007-04-22 22:48 <a href="http://www.blogjava.net/Archangelsy/articles/112830.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>