OpendTect  6.3
dateinfo.h
Go to the documentation of this file.
1 #pragma once
2 /*+
3 ________________________________________________________________________
4 
5  (C) dGB Beheer B.V.; (LICENSE) http://opendtect.org/OpendTect_license.txt
6  Author: A.H. Bril
7  Date: 12-3-1996
8 ________________________________________________________________________
9 
10 -*/
11 
12 #include "basicmod.h"
13 #include "enums.h"
14 #include "undefval.h"
15 
30 {
31 public:
32  enum DayOfWeek { Su=0, Mo, Tu, We, Th, Fr, Sa };
34  enum Month { Jan=0, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep,
35  Oct, Nov, Dec };
37  static const char** sFullMonths();
38  static const char** sAllDaysInMonth();
39 
40  DateInfo();
41  DateInfo(int usryr,int usrmnth,int usrdy);
42  DateInfo(int usryr,Month,int usrdy);
43  DateInfo(int usryr,const char* mnth,int usrdy);
44  DateInfo(const char*);
45 
46  bool isUdf() const { return mIsUdf(days1900_); }
47  void setUdf(bool yn=true);
48 
49  int day() const { return days_ + 1; }
50  Month month() const { return (Month)months_; }
51  int year() const { return 1900 + years_; }
52  int usrMonth() const { return (int)months_ + 1; }
53  void setDay(int);
54  void setMonth(int);
55  void setMonth(Month);
56  void setYear(int);
57 
58  bool operator ==(const DateInfo&) const;
59  bool operator !=(const DateInfo&) const;
60  bool operator <(const DateInfo&) const;
61  bool operator <=(const DateInfo&) const;
62  bool operator >(const DateInfo&) const;
63  bool operator >=(const DateInfo&) const;
64  DateInfo& operator +=(int);
65  DateInfo& operator -=( int dys ) { *this += -dys; return *this; }
66  friend int operator -(const DateInfo&,const DateInfo&);
67  void addMonths(int);
68 
69  int weekDay() const;
70  const char* weekDayName() const;
71  const char* monthName() const {return MonthDef().getKey(month());}
72  const char* whenRelative(const DateInfo* di=0) const;
73  static const char* fullMonthName(int);
74  static const char* fullMonthName(Month);
75  const char* fullMonthName() const { return fullMonthName(month());}
76 
77  void toString(BufferString&) const;
78  bool fromString(const char*);
79  bool fromStdDateString(const char*);
80  bool fromNumString(const char*,bool yearfirst);
81  void getUsrDisp(BufferString&,bool withcurtime) const;
82 
83  static int daysInMonth(int yr,Month);
84  static int daysInYear( int yr ) { return yr%4 ? 365 : 366; }
85  static Month usrMonth2Month(int);
86 
87 private:
88 
89  int days1900_;
90  int years_;
91  int months_;
92  int days_;
93 
94  void getDaysMonths(int,int,int&,int&);
95  void calcDMY();
96  void calcDays1900();
97  void getRel(const DateInfo&,BufferString&) const;
98  void getRelToday(BufferString&) const;
99  void addDay(BufferString&) const;
100 
101 public:
102 
103  int key() const { return days1900_; }
104  DateInfo(int the_key);
105 
106 };
107 
108 
109 inline bool DateInfo::operator ==( const DateInfo& di ) const
110 { return days1900_ == di.days1900_; }
111 
112 inline bool DateInfo::operator !=( const DateInfo& di ) const
113 { return days1900_ != di.days1900_; }
114 
115 inline bool DateInfo::operator <( const DateInfo& di ) const
116 { return days1900_ < di.days1900_; }
117 
118 inline bool DateInfo::operator <=( const DateInfo& di ) const
119 { return days1900_ <= di.days1900_; }
120 
121 inline bool DateInfo::operator >( const DateInfo& di ) const
122 { return days1900_ > di.days1900_; }
123 
124 inline bool DateInfo::operator >=( const DateInfo& di ) const
125 { return days1900_ >= di.days1900_; }
126 
127 inline int operator -( const DateInfo& di1, const DateInfo& di2 )
128 { return di1.days1900_ - di2.days1900_; }
#define mExpClass(module)
Definition: commondefs.h:157
#define mIsUdf(val)
Use mIsUdf to check for undefinedness of simple types.
Definition: undefval.h:285
static int daysInYear(int yr)
Definition: dateinfo.h:84
friend int operator-(const DateInfo &, const DateInfo &)
Definition: dateinfo.h:127
bool operator>(const NamedObject &obj1, const NamedObject &obj2)
Definition: namedobj.h:75
int operator-(const DateInfo &di1, const DateInfo &di2)
Definition: dateinfo.h:127
int year() const
Definition: dateinfo.h:51
bool operator==(const ArrayNDInfo &a1, const ArrayNDInfo &a2)
Definition: arrayndinfo.h:51
int key() const
Definition: dateinfo.h:103
int usrMonth() const
Definition: dateinfo.h:52
Definition: dateinfo.h:32
A date info class.
Definition: dateinfo.h:29
bool operator>(const DateInfo &) const
Definition: dateinfo.h:121
int months_
Definition: dateinfo.h:91
#define mDeclareEnumUtils(enm)
Some utilities surrounding the often needed enum <-> string table.
Definition: enums.h:188
int days_
Definition: dateinfo.h:92
bool operator<=(const DateInfo &) const
Definition: dateinfo.h:118
bool operator<(const DateInfo &) const
Definition: dateinfo.h:115
bool operator==(const DateInfo &) const
Definition: dateinfo.h:109
Month month() const
Definition: dateinfo.h:50
bool operator!=(const ArrayNDInfo &a1, const ArrayNDInfo &a2)
Definition: arrayndinfo.h:60
BufferString toString(const DBKey &ky)
Definition: dbkey.h:115
const char * monthName() const
Definition: dateinfo.h:71
int years_
Definition: dateinfo.h:90
OD::String with its own variable length buffer. The buffer has a guaranteed minimum size...
Definition: bufstring.h:38
Definition: dateinfo.h:35
Month
Definition: dateinfo.h:34
T & setUdf(T &u)
Definition: undefval.h:260
DayOfWeek
Definition: dateinfo.h:32
bool isUdf(const T &t)
Definition: undefval.h:241
const char * fullMonthName() const
Definition: dateinfo.h:75
Definition: dateinfo.h:34
bool operator!=(const DateInfo &) const
Definition: dateinfo.h:112
int day() const
Definition: dateinfo.h:49
bool operator>=(const DateInfo &) const
Definition: dateinfo.h:124
int days1900_
Definition: dateinfo.h:89

Generated at for the OpendTect seismic interpretation project. Copyright (C): dGB Beheer B. V. 2017