⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 date_8h-source.html

📁 最新版本!fastdb是高效的内存数据库系统
💻 HTML
📖 第 1 页 / 共 2 页
字号:
<!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.18 -->
<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 <span class="comment">//-&lt; DATE.H &gt;--------------------------------------------------------*--------*</span>
00002 <span class="comment">// FastDB                    Version 1.0         (c) 1999  GARRET    *     ?  *</span>
00003 <span class="comment">// (Main Memory Database Management System)                          *   /\|  *</span>
00004 <span class="comment">//                                                                   *  /  \  *</span>
00005 <span class="comment">//                          Created:     30-Apr-2000  K.A. Knizhnik  * / [] \ *</span>
00006 <span class="comment">//                          Last update: 30-Apr-2000  K.A. Knizhnik  * GARRET *</span>
00007 <span class="comment">//-------------------------------------------------------------------*--------*</span>
00008 <span class="comment">// Date field type</span>
00009 <span class="comment">//-------------------------------------------------------------------*--------*</span>
00010 
00011 <span class="preprocessor">#ifndef __DATE_H__</span>
00012 <span class="preprocessor"></span><span class="preprocessor">#define __DATE_H__</span>
00013 <span class="preprocessor"></span>
00014 <span class="preprocessor">#include "stdtp.h"</span>
00015 <span class="preprocessor">#include "class.h"</span>
00016 
00017 BEGIN_FASTDB_NAMESPACE
00018 
00019 <span class="preprocessor">#if !defined(NO_PTHREADS) &amp;&amp; !defined(_WIN32)</span>
00020 <span class="preprocessor"></span><span class="preprocessor">#define USE_REENTRANT_LIBRARY</span>
00021 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
00022 <span class="preprocessor"></span>
00023 <span class="keyword">class </span>FASTDB_DLL_ENTRY dbDate { 
00024     int4 jday;
00025   <span class="keyword">public</span>:
00026     <span class="keywordtype">bool</span> operator == (dbDate <span class="keyword">const</span>&amp; dt) { 
00027         <span class="keywordflow">return</span> jday == dt.jday;
00028     }
00029     <span class="keywordtype">bool</span> operator != (dbDate <span class="keyword">const</span>&amp; dt) { 
00030         <span class="keywordflow">return</span> jday != dt.jday;
00031     }
00032     <span class="keywordtype">bool</span> operator &gt; (dbDate <span class="keyword">const</span>&amp; dt) { 
00033         <span class="keywordflow">return</span> jday &gt; dt.jday;
00034     }
00035     <span class="keywordtype">bool</span> operator &gt;= (dbDate <span class="keyword">const</span>&amp; dt) { 
00036         <span class="keywordflow">return</span> jday &gt;= dt.jday;
00037     }
00038     <span class="keywordtype">bool</span> operator &lt; (dbDate <span class="keyword">const</span>&amp; dt) { 
00039         <span class="keywordflow">return</span> jday &lt; dt.jday;
00040     }
00041     <span class="keywordtype">bool</span> operator &lt;= (dbDate <span class="keyword">const</span>&amp; dt) { 
00042         <span class="keywordflow">return</span> jday &lt;= dt.jday;
00043     }
00044     <span class="keywordtype">int</span> operator - (dbDate <span class="keyword">const</span>&amp; dt) { 
00045         <span class="keywordflow">return</span> jday - dt.jday;
00046     }
00047     <span class="keywordtype">int</span> operator + (<span class="keywordtype">int</span> days) { 
00048         <span class="keywordflow">return</span> jday + days;
00049     }
00050     dbDate&amp; operator += (<span class="keywordtype">int</span> days) { 
00051         jday += days;
00052         <span class="keywordflow">return</span> *<span class="keyword">this</span>;
00053     }
00054     dbDate&amp; operator -= (<span class="keywordtype">int</span> days) { 
00055         jday -= days;
00056         <span class="keywordflow">return</span> *<span class="keyword">this</span>;
00057     }
00058     <span class="keyword">static</span> dbDate current() { 
00059         time_t now = time(NULL);
00060         <span class="keyword">struct </span>tm* tp;
00061 <span class="preprocessor">#ifdef USE_REENTRANT_LIBRARY</span>
00062 <span class="preprocessor"></span>        <span class="keyword">struct </span>tm t;
00063         tp = localtime_r(&amp;now, &amp;t);
00064 <span class="preprocessor">#else </span>
00065 <span class="preprocessor"></span>        tp = localtime(&amp;now);
00066 <span class="preprocessor">#endif</span>
00067 <span class="preprocessor"></span>        <span class="keywordflow">return</span> dbDate(tp-&gt;tm_year + 1900, tp-&gt;tm_mon + 1, tp-&gt;tm_mday);
00068     }
00069 
00070     dbDate() { 
00071         jday = -1;
00072     } 
00073     <span class="keywordtype">bool</span> isValid()<span class="keyword">const</span>  { 
00074         <span class="keywordflow">return</span> jday != -1;
00075     }
00076 
00077     <span class="keywordtype">unsigned</span> JulianDay() { <span class="keywordflow">return</span> jday; }
00078 
00079     <span class="keywordtype">void</span> clear() { jday = -1; }
00080 
00081     dbDate(<span class="keywordtype">int</span> year, <span class="keywordtype">int</span> month, <span class="keywordtype">int</span> day)  {
00082     <span class="comment">/*</span>
00083 <span class="comment">      Convert Gregorian calendar date to the corresponding Julian day number</span>
00084 <span class="comment">      j.  Algorithm 199 from Communications of the ACM, Volume 6, No. 8,</span>
00085 <span class="comment">      (Aug. 1963), p. 444.  Gregorian calendar started on Sep. 14, 1752.</span>
00086 <span class="comment">      This function not valid before that.</span>
00087 <span class="comment">      */</span>
00088         nat4 c, ya;
00089         <span class="keywordflow">if</span> (month &gt; 2)
00090             month -= 3;
00091         <span class="keywordflow">else</span> {
00092             month += 9;
00093             year--;
00094         } <span class="comment">/* else */</span>
00095         c = year / 100;
00096         ya = year - 100*c;
00097         jday = ((146097*c)&gt;&gt;2) + ((1461*ya)&gt;&gt;2) + (153*month + 2)/5 + day + 1721119;
00098     } <span class="comment">/* jday */</span>
00099 
00100     <span class="keywordtype">void</span> MDY(<span class="keywordtype">int</span>&amp; year, <span class="keywordtype">int</span>&amp; month, <span class="keywordtype">int</span>&amp; day)<span class="keyword"> const </span>{ 
00101     <span class="comment">/*</span>
00102 <span class="comment">      Convert a Julian day number to its corresponding Gregorian calendar</span>
00103 <span class="comment">      date.  Algorithm 199 from Communications of the ACM, Volume 6, No. 8,</span>
00104 <span class="comment">      (Aug. 1963), p. 444.  Gregorian calendar started on Sep. 14, 1752.</span>
00105 <span class="comment">      This function not valid before that.</span>
00106 <span class="comment">     */</span>
00107         nat4 j = jday - 1721119;
00108         <span class="keywordtype">int</span> m, d, y;
00109         y = (((j&lt;&lt;2) - 1) / 146097);
00110         j = (j&lt;&lt;2) - 1 - 146097*y;
00111         d = (j&gt;&gt;2);
00112         j = ((d&lt;&lt;2) + 3) / 1461;
00113         d = ((d&lt;&lt;2) + 3 - 1461*j);
00114         d = (d + 4)&gt;&gt;2;
00115         m = (5*d - 3)/153;
00116         d = 5*d - 3 - 153*m;
00117         d = (d + 5)/5;
00118         y = (100*y + j);

⌨️ 快捷键说明

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