summaryrefslogtreecommitdiff
path: root/tools/inc/tools/date.hxx
diff options
context:
space:
mode:
Diffstat (limited to 'tools/inc/tools/date.hxx')
-rw-r--r--tools/inc/tools/date.hxx120
1 files changed, 120 insertions, 0 deletions
diff --git a/tools/inc/tools/date.hxx b/tools/inc/tools/date.hxx
new file mode 100644
index 000000000000..50b31edb0f83
--- /dev/null
+++ b/tools/inc/tools/date.hxx
@@ -0,0 +1,120 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+#ifndef _DATE_HXX
+#define _DATE_HXX
+
+#include "tools/toolsdllapi.h"
+#include <tools/solar.h>
+
+class ResId;
+
+// --------------
+// - Date-Types -
+// --------------
+
+enum DayOfWeek { MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY,
+ SATURDAY, SUNDAY };
+
+// --------
+// - Date -
+// --------
+
+class TOOLS_DLLPUBLIC Date
+{
+private:
+ sal_uInt32 nDate;
+
+public:
+ Date();
+ Date( const ResId & rResId );
+ Date( sal_uInt32 _nDate ) { Date::nDate = _nDate; }
+ Date( const Date& rDate )
+ { nDate = rDate.nDate; }
+ Date( USHORT nDay, USHORT nMonth, USHORT nYear )
+ { nDate = ( sal_uInt32( nDay % 100 ) ) +
+ ( ( sal_uInt32( nMonth % 100 ) ) * 100 ) +
+ ( ( sal_uInt32( nYear % 10000 ) ) * 10000); }
+
+ void SetDate( sal_uInt32 nNewDate ) { nDate = nNewDate; }
+ sal_uInt32 GetDate() const { return nDate; }
+
+ void SetDay( USHORT nNewDay );
+ void SetMonth( USHORT nNewMonth );
+ void SetYear( USHORT nNewYear );
+ USHORT GetDay() const { return (USHORT)(nDate % 100); }
+ USHORT GetMonth() const { return (USHORT)((nDate / 100) % 100); }
+ USHORT GetYear() const { return (USHORT)(nDate / 10000); }
+
+ DayOfWeek GetDayOfWeek() const;
+ USHORT GetDayOfYear() const;
+ /** nMinimumNumberOfDaysInWeek: how many days of a week must reside in the
+ first week of a year. */
+ USHORT GetWeekOfYear( DayOfWeek eStartDay = MONDAY,
+ sal_Int16 nMinimumNumberOfDaysInWeek = 4 ) const;
+
+ USHORT GetDaysInMonth() const;
+ USHORT GetDaysInYear() const { return (IsLeapYear()) ? 366 : 365; }
+ BOOL IsLeapYear() const;
+ BOOL IsValid() const;
+
+ BOOL IsBetween( const Date& rFrom, const Date& rTo ) const
+ { return ((nDate >= rFrom.nDate) &&
+ (nDate <= rTo.nDate)); }
+
+ BOOL operator ==( const Date& rDate ) const
+ { return (nDate == rDate.nDate); }
+ BOOL operator !=( const Date& rDate ) const
+ { return (nDate != rDate.nDate); }
+ BOOL operator >( const Date& rDate ) const
+ { return (nDate > rDate.nDate); }
+ BOOL operator <( const Date& rDate ) const
+ { return (nDate < rDate.nDate); }
+ BOOL operator >=( const Date& rDate ) const
+ { return (nDate >= rDate.nDate); }
+ BOOL operator <=( const Date& rDate ) const
+ { return (nDate <= rDate.nDate); }
+
+ Date& operator =( const Date& rDate )
+ { nDate = rDate.nDate; return *this; }
+ Date& operator +=( long nDays );
+ Date& operator -=( long nDays );
+ Date& operator ++();
+ Date& operator --();
+#ifndef MPW33
+ Date operator ++( int );
+ Date operator --( int );
+#endif
+
+ TOOLS_DLLPUBLIC friend Date operator +( const Date& rDate, long nDays );
+ TOOLS_DLLPUBLIC friend Date operator -( const Date& rDate, long nDays );
+ TOOLS_DLLPUBLIC friend long operator -( const Date& rDate1, const Date& rDate2 );
+
+ static long DateToDays( USHORT nDay, USHORT nMonth, USHORT nYear );
+
+};
+
+#endif // _DATE_HXX