date_8h-source.html

来自「一个功能强大的内存数据库源代码,c++编写,有详细的注释」· HTML 代码 · 共 240 行 · 第 1/2 页

HTML
240
字号
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"><title>date.h Source File</title><link href="doxygen.css" rel="stylesheet" type="text/css"></head><body><!-- Generated by Doxygen 1.2.15 --><center><a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center><hr><h1>date.h</h1><div class="fragment"><pre>00001 <font class="comment">//-&lt; DATE.H &gt;--------------------------------------------------------*--------*</font>00002 <font class="comment">// FastDB                    Version 1.0         (c) 1999  GARRET    *     ?  *</font>00003 <font class="comment">// (Main Memory Database Management System)                          *   /\|  *</font>00004 <font class="comment">//                                                                   *  /  \  *</font>00005 <font class="comment">//                          Created:     30-Apr-2000  K.A. Knizhnik  * / [] \ *</font>00006 <font class="comment">//                          Last update: 30-Apr-2000  K.A. Knizhnik  * GARRET *</font>00007 <font class="comment">//-------------------------------------------------------------------*--------*</font>00008 <font class="comment">// Date field type</font>00009 <font class="comment">//-------------------------------------------------------------------*--------*</font>00010 00011 <font class="preprocessor">#ifndef __DATE_H__</font>00012 <font class="preprocessor"></font><font class="preprocessor">#define __DATE_H__</font>00013 <font class="preprocessor"></font>00014 <font class="preprocessor">#include &lt;time.h&gt;</font>00015 <font class="preprocessor">#include "stdtp.h"</font>00016 <font class="preprocessor">#include "class.h"</font>00017 00018 <font class="preprocessor">#if !defined(NO_PTHREADS) &amp;&amp; !defined(_WIN32)</font>00019 <font class="preprocessor"></font><font class="preprocessor">#define USE_REENTRANT_LIBRARY</font>00020 <font class="preprocessor"></font><font class="preprocessor">#endif</font>00021 <font class="preprocessor"></font>00022 <font class="keyword">class </font>FASTDB_DLL_ENTRY dbDate { 00023     int4 jday;00024   <font class="keyword">public</font>:00025     <font class="keywordtype">bool</font> operator == (dbDate <font class="keyword">const</font>&amp; dt) { 00026         <font class="keywordflow">return</font> jday == dt.jday;00027     }00028     <font class="keywordtype">bool</font> operator != (dbDate <font class="keyword">const</font>&amp; dt) { 00029         <font class="keywordflow">return</font> jday != dt.jday;00030     }00031     <font class="keywordtype">bool</font> operator &gt; (dbDate <font class="keyword">const</font>&amp; dt) { 00032         <font class="keywordflow">return</font> jday &gt; dt.jday;00033     }00034     <font class="keywordtype">bool</font> operator &gt;= (dbDate <font class="keyword">const</font>&amp; dt) { 00035         <font class="keywordflow">return</font> jday &gt;= dt.jday;00036     }00037     <font class="keywordtype">bool</font> operator &lt; (dbDate <font class="keyword">const</font>&amp; dt) { 00038         <font class="keywordflow">return</font> jday &lt; dt.jday;00039     }00040     <font class="keywordtype">bool</font> operator &lt;= (dbDate <font class="keyword">const</font>&amp; dt) { 00041         <font class="keywordflow">return</font> jday &lt;= dt.jday;00042     }00043     <font class="keywordtype">int</font> operator - (dbDate <font class="keyword">const</font>&amp; dt) { 00044         <font class="keywordflow">return</font> jday - dt.jday;00045     }00046     <font class="keywordtype">int</font> operator + (<font class="keywordtype">int</font> days) { 00047         <font class="keywordflow">return</font> jday + days;00048     }00049     <font class="keyword">static</font> dbDate current() { 00050         time_t now = time(NULL);00051         <font class="keyword">struct </font>tm* tp;00052 <font class="preprocessor">#ifdef USE_REENTRANT_LIBRARY</font>00053 <font class="preprocessor"></font>        <font class="keyword">struct </font>tm t;00054         tp = localtime_r(&amp;now, &amp;t);00055 <font class="preprocessor">#else </font>00056 <font class="preprocessor"></font>        tp = localtime(&amp;now);00057 <font class="preprocessor">#endif</font>00058 <font class="preprocessor"></font>        <font class="keywordflow">return</font> dbDate(tp-&gt;tm_year + 1900, tp-&gt;tm_mon + 1, tp-&gt;tm_mday);00059     }00060 00061     dbDate() { 00062         jday = -1;00063     } 00064     <font class="keywordtype">bool</font> isValid() { 00065         <font class="keywordflow">return</font> jday != -1;00066     }00067 00068     <font class="keywordtype">unsigned</font> JulianDay() { <font class="keywordflow">return</font> jday; }00069 00070     <font class="keywordtype">void</font> clear() { jday = -1; }00071 00072     dbDate(<font class="keywordtype">int</font> year, <font class="keywordtype">int</font> month, <font class="keywordtype">int</font> day)  {00073     <font class="comment">/*</font>00074 <font class="comment">      Convert Gregorian calendar date to the corresponding Julian day number</font>00075 <font class="comment">      j.  Algorithm 199 from Communications of the ACM, Volume 6, No. 8,</font>00076 <font class="comment">      (Aug. 1963), p. 444.  Gregorian calendar started on Sep. 14, 1752.</font>00077 <font class="comment">      This function not valid before that.</font>00078 <font class="comment">      */</font>00079         nat4 c, ya;00080         <font class="keywordflow">if</font> (month &gt; 2)00081             month -= 3;00082         <font class="keywordflow">else</font> {00083             month += 9;00084             year--;00085         } <font class="comment">/* else */</font>00086         c = year / 100;00087         ya = year - 100*c;00088         jday = ((146097*c)&gt;&gt;2) + ((1461*ya)&gt;&gt;2) + (153*month + 2)/5 + day + 1721119;00089     } <font class="comment">/* jday */</font>00090 00091     <font class="keywordtype">void</font> MDY(<font class="keywordtype">int</font>&amp; year, <font class="keywordtype">int</font>&amp; month, <font class="keywordtype">int</font>&amp; day)<font class="keyword"> const </font>{ 00092     <font class="comment">/*</font>00093 <font class="comment">      Convert a Julian day number to its corresponding Gregorian calendar</font>00094 <font class="comment">      date.  Algorithm 199 from Communications of the ACM, Volume 6, No. 8,</font>00095 <font class="comment">      (Aug. 1963), p. 444.  Gregorian calendar started on Sep. 14, 1752.</font>00096 <font class="comment">      This function not valid before that.</font>00097 <font class="comment">     */</font>00098         nat4 j = jday - 1721119;00099         <font class="keywordtype">int</font> m, d, y;00100         y = (((j&lt;&lt;2) - 1) / 146097);00101         j = (j&lt;&lt;2) - 1 - 146097*y;00102         d = (j&gt;&gt;2);00103         j = ((d&lt;&lt;2) + 3) / 1461;00104         d = ((d&lt;&lt;2) + 3 - 1461*j);00105         d = (d + 4)&gt;&gt;2;00106         m = (5*d - 3)/153;00107         d = 5*d - 3 - 153*m;00108         d = (d + 5)/5;00109         y = (100*y + j);00110         <font class="keywordflow">if</font> (m &lt; 10) { 00111                 m += 3;00112         } <font class="keywordflow">else</font> {

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?