Date.hpp
上传用户:yhdzpy8989
上传日期:2007-06-13
资源大小:13604k
文件大小:7k
源码类别:

生物技术

开发平台:

C/C++

  1. /*
  2.  * ===========================================================================
  3.  * PRODUCTION $Log: Date.hpp,v $
  4.  * PRODUCTION Revision 1000.0  2003/10/29 21:00:42  gouriano
  5.  * PRODUCTION PRODUCTION: IMPORTED [ORIGINAL] Dev-tree R1.9
  6.  * PRODUCTION
  7.  * ===========================================================================
  8.  */
  9. /* $Id: Date.hpp,v 1000.0 2003/10/29 21:00:42 gouriano Exp $
  10.  * ===========================================================================
  11.  *
  12.  *                            PUBLIC DOMAIN NOTICE
  13.  *               National Center for Biotechnology Information
  14.  *
  15.  *  This software/database is a "United States Government Work" under the
  16.  *  terms of the United States Copyright Act.  It was written as part of
  17.  *  the author's official duties as a United States Government employee and
  18.  *  thus cannot be copyrighted.  This software/database is freely available
  19.  *  to the public for use. The National Library of Medicine and the U.S.
  20.  *  Government have not placed any restriction on its use or reproduction.
  21.  *
  22.  *  Although all reasonable efforts have been taken to ensure the accuracy
  23.  *  and reliability of the software and data, the NLM and the U.S.
  24.  *  Government do not and cannot warrant the performance or results that
  25.  *  may be obtained by using this software or data. The NLM and the U.S.
  26.  *  Government disclaim all warranties, express or implied, including
  27.  *  warranties of performance, merchantability or fitness for any particular
  28.  *  purpose.
  29.  *
  30.  *  Please cite the author in any work or product based on this material.
  31.  *
  32.  * ===========================================================================
  33.  *
  34.  * Author:  Aaron Ucko, NCBI
  35.  *
  36.  * File Description:
  37.  *   Useful member functions for dates: comparison and formatting
  38.  *
  39.  * Remark:
  40.  *   This code was originally generated by application DATATOOL
  41.  *   using specifications from the ASN data definition file
  42.  *   'general.asn'.
  43.  */
  44. #ifndef OBJECTS_GENERAL_DATE_HPP
  45. #define OBJECTS_GENERAL_DATE_HPP
  46. // generated includes
  47. #include <objects/general/Date_.hpp>
  48. #include <corelib/ncbitime.hpp>
  49. // generated classes
  50. BEGIN_NCBI_SCOPE
  51. BEGIN_objects_SCOPE // namespace ncbi::objects::
  52. class NCBI_GENERAL_EXPORT CDate : public CDate_Base
  53. {
  54.     typedef CDate_Base Tparent;
  55. public:
  56.     // for conversion from CTime
  57.     enum EPrecision {
  58.         ePrecision_day,
  59.         ePrecision_second
  60.     };
  61.     // constructors; the latter two make Date-stds
  62.     CDate(void);
  63.     CDate(const CTime& time, EPrecision prec = ePrecision_second);
  64.     explicit CDate(time_t time, EPrecision prec = ePrecision_second);
  65.     // destructor
  66.     ~CDate(void);
  67.     void  SetToTime(const CTime& time, EPrecision prec = ePrecision_second);
  68.     CTime AsCTime  (CTime::ETimeZone tz = CTime::eLocal) const;
  69.     enum ECompare {
  70.         eCompare_before = -1,
  71.         eCompare_same,
  72.         eCompare_after,
  73.         eCompare_unknown
  74.     };
  75.     ECompare Compare(const CDate& date) const;
  76.     
  77.     // Appends a date as a string to label. If internally, the date
  78.     // is a string, the string is just returned. If internally the date
  79.     // is a CDate_std and year_only is false, then the date is returned 
  80.     // as mm-dd-yyyy if possible else, just year is returned
  81.     void GetDate(string* label, bool year_only = false) const;
  82.     // Format controls the treatment of Date-std.  (Strings
  83.     // necessarily remain as is.)  Specifically,
  84.     // %Y -> year
  85.     // %M -> month as number
  86.     // %N -> month as (English) word
  87.     // %D -> day
  88.     // %S -> season
  89.     // %h -> hour
  90.     // %m -> minute
  91.     // %s -> second
  92.     // Each of the above can contain a number immediately following the
  93.     // percent sign, indicating the number of characters to yield.
  94.     // 
  95.     // In addition, there are special directives to deal with optional
  96.     // elements: %{ ... %} (which may be nested) may be used to
  97.     // delimit subsequences that should vanish altogether if optional
  98.     // elements they contain are missing, and %| may be used to
  99.     // designate fallbacks.  (For instance, the above interface
  100.     // defaults to a format of "%{%2M-%2D-%}%Y, and one might format
  101.     // dates for GenBank with "%{%{%2D%|01%}-%3N%|01-JAN%}-%Y" if one
  102.     // wanted to fudge legal values if necessary.)
  103.     //
  104.     // Finally, %% -> %.
  105.     void GetDate(string* label, const string& format) const;
  106.     void GetDate(string* label, const char*   format) const;
  107. private:
  108.     // Prohibit copy constructor and assignment operator
  109.     CDate(const CDate& value);
  110.     CDate& operator=(const CDate& value);
  111. };
  112. /////////////////// CDate inline methods
  113. // constructors
  114. inline
  115. CDate::CDate(void)
  116. {
  117. }
  118. inline CDate::CDate(const CTime& time, CDate::EPrecision prec)
  119. {
  120.     SetToTime(time, prec);
  121. }
  122. inline CDate::CDate(time_t time, CDate::EPrecision prec)
  123. {
  124.     SetToTime(CTime(time), prec);
  125. }
  126. // old version of GetDate
  127. inline
  128. void CDate::GetDate(string* label, bool year_only) const
  129. {
  130.     GetDate(label, year_only ? "%Y" : "%{%2M-%2D-%}%Y");
  131. }
  132. // Make sure that stupid compilers don't try to cast char* to bool....
  133. inline
  134. void CDate::GetDate(string* label, const char* format) const
  135. {
  136.     GetDate(label, string(format));
  137. }
  138. /////////////////// end of CDate inline methods
  139. END_objects_SCOPE // namespace ncbi::objects::
  140. END_NCBI_SCOPE
  141. /*
  142.  * ===========================================================================
  143.  *
  144.  * $Log: Date.hpp,v $
  145.  * Revision 1000.0  2003/10/29 21:00:42  gouriano
  146.  * PRODUCTION: IMPORTED [ORIGINAL] Dev-tree R1.9
  147.  *
  148.  * Revision 1.9  2003/02/10 21:55:43  ucko
  149.  * Make time_t-based ctors explicit, and explicitly construct temporary CTimes.
  150.  *
  151.  * Revision 1.8  2002/12/26 12:40:33  dicuccio
  152.  * Added Win32 export specifiers
  153.  *
  154.  * Revision 1.7  2002/12/09 17:30:10  ucko
  155.  * Rename Assign to SetToTime to avoid shadowing CSerialObject; propagate tz
  156.  *
  157.  * Revision 1.6  2002/12/06 20:03:15  ucko
  158.  * Support conversion to/from CTime and from time_t
  159.  *
  160.  * Revision 1.5  2002/10/08 20:24:34  ucko
  161.  * Add explicit wrapper around new version of GetDate to avoid trouble from
  162.  * compilers that would rather convert const char* to bool than to string.
  163.  *
  164.  * Revision 1.4  2002/10/04 17:32:45  ucko
  165.  * Drop spurious "return" from GetDate wrapper.
  166.  *
  167.  * Revision 1.3  2002/10/04 14:45:07  ucko
  168.  * Add a generic date formatter with flexible support for missing fields.
  169.  *
  170.  * Revision 1.2  2002/01/10 19:46:44  clausen
  171.  * Added GetDate
  172.  *
  173.  * Revision 1.1  2001/11/16 20:54:50  ucko
  174.  * Added comparison for dates.
  175.  *
  176.  * ===========================================================================
  177.  */
  178. #endif // OBJECTS_GENERAL_DATE_HPP
  179. /* Original file checksum: lines: 90, chars: 2320, CRC32: 5affaceb */