haiku/headers/private/shared/DateTime.h
Karsten Heimrich de13e4c0bd * implement julian day handling
* more get/ set functions, operators
* date until 1582 are handled in julian calendar
* date above 1582 are handled in gregorian calendar



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@27264 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-09-01 13:11:29 +00:00

137 lines
2.7 KiB
C++
Executable File

/*
* Copyright 2007-2008, Haiku, Inc. All Rights Reserved.
* Distributed under the terms of the MIT License.
*/
#ifndef _DATE_TIME_H_
#define _DATE_TIME_H_
#include <String.h>
namespace BPrivate {
enum time_type {
B_GMT_TIME,
B_LOCAL_TIME
};
class BTime {
public:
BTime();
BTime(int32 hour, int32 minute, int32 second);
~BTime();
bool IsValid() const;
static BTime CurrentTime(time_type type);
bool SetTime(int32 hour, int32 minute, int32 second);
int32 Hour() const;
int32 Minute() const;
int32 Second() const;
private:
int32 fHour;
int32 fMinute;
int32 fSecond;
};
class BDate {
public:
BDate();
BDate(int32 year, int32 month, int32 day);
~BDate();
bool IsValid() const;
bool IsValid(const BDate& date) const;
bool IsValid(int32 year, int32 month, int32 day) const;
static BDate CurrentDate(time_type type);
BDate Date() const;
bool SetDate(const BDate& date);
bool SetDate(int32 year, int32 month, int32 day);
void GetDate(int32* year, int32* month, int32* day);
void AddDays(int32 days);
void AddYears(int32 years);
void AddMonths(int32 months);
int32 Day() const;
int32 Year() const;
int32 Month() const;
int32 Difference(const BDate& date) const;
int32 DayOfWeek() const;
int32 DayOfYear() const;
int32 WeekNumber() const;
bool IsLeapYear(int32 year) const;
int32 DaysInYear() const;
int32 DaysInMonth() const;
BString ShortDayName(int32 day) const;
BString ShortMonthName(int32 month) const;
BString LongDayName(int32 day) const;
BString LongMonthName(int32 month) const;
int32 DateToJulianDay() const;
static BDate JulianDayToDate(int32 julianDay);
bool operator!=(const BDate& date) const;
bool operator==(const BDate& date) const;
bool operator<(const BDate& date) const;
bool operator<=(const BDate& date) const;
bool operator>(const BDate& date) const;
bool operator>=(const BDate& date) const;
private:
int32 _DaysInMonth(int32 year, int32 month) const;
bool _SetDate(int32 year, int32 month, int32 day);
int32 _DateToJulianDay(int32 year, int32 month, int32 day) const;
private:
int32 fDay;
int32 fYear;
int32 fMonth;
};
class BDateTime {
public:
BDateTime(const BDate &date, const BTime &time);
~BDateTime();
bool IsValid() const;
static BDateTime CurrentDateTime(time_type type);
void SetDateTime(const BDate &date, const BTime &time);
BDate Date() const;
void SetDate(const BDate &date);
BTime Time() const;
void SetTime(const BTime &time);
uint32 Time_t() const;
private:
BDate fDate;
BTime fTime;
};
} // namespace BPrivate
#endif // _DATE_TIME_H_