OpendTect  6.6
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  RCS: $Id$
9 ________________________________________________________________________
10 
11 -*/
12 
13 #include "basicmod.h"
14 #include "enums.h"
15 #include "undefval.h"
16 
31 {
32 public:
33  enum DayOfWeek { Su=0, Mo, Tu, We, Th, Fr, Sa };
35  enum Month { Jan=0, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep,
36  Oct, Nov, Dec };
38  static const char** sFullMonths();
39  static const char** sAllDaysInMonth();
40 
42  DateInfo(int usryr,int usrmnth,int usrdy);
43  DateInfo(int usryr,Month,int usrdy);
44  DateInfo(int usryr,const char* mnth,int usrdy);
45  DateInfo(const char*);
46 
47  bool isUdf() const { return mIsUdf(days1900_); }
48  void setUdf(bool yn=true);
49 
50  int day() const { return days_ + 1; }
51  Month month() const { return (Month)months_; }
52  int year() const { return 1900 + years_; }
53  int usrMonth() const { return (int)months_ + 1; }
54  void setDay(int);
55  void setMonth(int);
56  void setMonth(Month);
57  void setYear(int);
58 
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  bool operator >=(const DateInfo&) const;
65  DateInfo& operator +=(int);
66  DateInfo& operator -=( int dys ) { *this += -dys; return *this; }
67  friend int operator -(const DateInfo&,const DateInfo&);
68  void addMonths(int);
69 
70  int weekDay() const;
71  const char* weekDayName() const;
72  const char* monthName() const {return getMonthString(month());}
73  const char* whenRelative(const DateInfo* di=0) const;
74  static const char* fullMonthName(int);
75  static const char* fullMonthName(Month);
76  const char* fullMonthName() const { return fullMonthName(month());}
77 
78  void toString(BufferString&) const;
79  bool fromString(const char*);
80  bool fromStdDateString(const char*);
81  bool fromNumString(const char*,bool yearfirst);
82  void getUsrDisp(BufferString&,bool withcurtime) const;
83 
84  static int daysInMonth(int yr,Month);
85  static int daysInYear( int yr ) { return yr%4 ? 365 : 366; }
86  static Month usrMonth2Month(int);
87 
88 private:
89 
90  int days1900_;
91  int years_;
92  int months_;
93  int days_;
94 
95  void getDaysMonths(int,int,int&,int&);
96  void calcDMY();
97  void calcDays1900();
98  void getRel(const DateInfo&,BufferString&) const;
99  void getRelToday(BufferString&) const;
100  void addDay(BufferString&) const;
101 
102 public:
103 
104  int key() const { return days1900_; }
105  DateInfo(int the_key);
106 
107 };
108 
109 
110 inline bool DateInfo::operator ==( const DateInfo& di ) const
111 { return days1900_ == di.days1900_; }
112 
113 inline bool DateInfo::operator !=( const DateInfo& di ) const
114 { return days1900_ != di.days1900_; }
115 
116 inline bool DateInfo::operator <( const DateInfo& di ) const
117 { return days1900_ < di.days1900_; }
118 
119 inline bool DateInfo::operator <=( const DateInfo& di ) const
120 { return days1900_ <= di.days1900_; }
121 
122 inline bool DateInfo::operator >( const DateInfo& di ) const
123 { return days1900_ > di.days1900_; }
124 
125 inline bool DateInfo::operator >=( const DateInfo& di ) const
126 { return days1900_ >= di.days1900_; }
127 
128 inline int operator -( const DateInfo& di1, const DateInfo& di2 )
129 { return di1.days1900_ - di2.days1900_; }
130 
131 
DateInfo::month
Month month() const
Definition: dateinfo.h:51
DateInfo::fromNumString
bool fromNumString(const char *, bool yearfirst)
DateInfo::setUdf
void setUdf(bool yn=true)
DateInfo::getDaysMonths
void getDaysMonths(int, int, int &, int &)
DateInfo::setDay
void setDay(int)
DateInfo::key
int key() const
Definition: dateinfo.h:104
DateInfo::getRelToday
void getRelToday(BufferString &) const
mIsUdf
#define mIsUdf(val)
Use mIsUdf to check for undefinedness of simple types.
Definition: undefval.h:289
DateInfo::fullMonthName
static const char * fullMonthName(Month)
mExpClass
#define mExpClass(module)
Definition: commondefs.h:177
DateInfo::fullMonthName
static const char * fullMonthName(int)
DateInfo::daysInYear
static int daysInYear(int yr)
Definition: dateinfo.h:85
mDeclareEnumUtils
#define mDeclareEnumUtils(enm)
Some utilities surrounding the often needed enum <-> string table.
Definition: enums.h:257
DateInfo::weekDay
int weekDay() const
Sunday => 1.
DateInfo::calcDays1900
void calcDays1900()
DateInfo::weekDayName
const char * weekDayName() const
DateInfo::operator==
bool operator==(const DateInfo &) const
Definition: dateinfo.h:110
DateInfo::Month
Month
Definition: dateinfo.h:35
operator==
bool operator==(const ArrayNDInfo &a1, const ArrayNDInfo &a2)
Definition: arrayndinfo.h:81
DateInfo::monthName
const char * monthName() const
Definition: dateinfo.h:72
DateInfo::days1900_
int days1900_
Definition: dateinfo.h:90
undefval.h
DateInfo::months_
int months_
Definition: dateinfo.h:92
DateInfo::operator<=
bool operator<=(const DateInfo &) const
Definition: dateinfo.h:119
DateInfo::We
@ We
Definition: dateinfo.h:33
DateInfo::getUsrDisp
void getUsrDisp(BufferString &, bool withcurtime) const
Values::isUdf
bool isUdf(const T &t)
Definition: undefval.h:245
DateInfo::operator<
bool operator<(const DateInfo &) const
Definition: dateinfo.h:116
DateInfo::years_
int years_
Definition: dateinfo.h:91
DateInfo::fullMonthName
const char * fullMonthName() const
Definition: dateinfo.h:76
DateInfo::fromStdDateString
bool fromStdDateString(const char *)
DateInfo::DayOfWeek
DayOfWeek
Definition: dateinfo.h:33
operator!=
bool operator!=(const ArrayNDInfo &a1, const ArrayNDInfo &a2)
Definition: arrayndinfo.h:90
DateInfo::operator>=
bool operator>=(const DateInfo &) const
Definition: dateinfo.h:125
DateInfo::addMonths
void addMonths(int)
DateInfo::usrMonth2Month
static Month usrMonth2Month(int)
DateInfo::addDay
void addDay(BufferString &) const
DateInfo::setMonth
void setMonth(Month)
DateInfo::DateInfo
DateInfo(int the_key)
DateInfo::day
int day() const
Definition: dateinfo.h:50
BufferString
OD::String with its own variable length buffer. The buffer has a guaranteed minimum size.
Definition: bufstring.h:40
DateInfo::days_
int days_
Definition: dateinfo.h:93
DateInfo::usrMonth
int usrMonth() const
Definition: dateinfo.h:53
operator-
int operator-(const DateInfo &di1, const DateInfo &di2)
Definition: dateinfo.h:128
DateInfo::fromString
bool fromString(const char *)
DateInfo::toString
void toString(BufferString &) const
enums.h
DateInfo::operator!=
bool operator!=(const DateInfo &) const
Definition: dateinfo.h:113
DateInfo::Oct
@ Oct
Definition: dateinfo.h:36
DateInfo
A date info class.
Definition: dateinfo.h:31
DateInfo::getRel
void getRel(const DateInfo &, BufferString &) const
DateInfo::whenRelative
const char * whenRelative(const DateInfo *di=0) const
operator>
bool operator>(const ObjectWithName &obj1, const ObjectWithName &obj2)
Definition: namedobj.h:95
DateInfo::setMonth
void setMonth(int)
DateInfo::setYear
void setYear(int)
DateInfo::operator>
bool operator>(const DateInfo &) const
Definition: dateinfo.h:122
DateInfo::Sep
@ Sep
Definition: dateinfo.h:35
DateInfo::year
int year() const
Definition: dateinfo.h:52
DateInfo::calcDMY
void calcDMY()
DateInfo::daysInMonth
static int daysInMonth(int yr, Month)

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