21 #ifndef __EDELIB_DATETIME_H__
22 #define __EDELIB_DATETIME_H__
24 #include "edelib-global.h"
36 unsigned long timeval;
38 bool load(
const char* zone);
39 bool load_local(
void);
56 bool set(
const char* n);
61 const char*
code(
void) {
return (zcode ? zcode :
"??"); }
66 const char*
zone(
void) {
return (zoneval ? zoneval :
"Unknown"); }
72 unsigned long time(
void) {
return timeval; }
142 unsigned char dayval;
143 unsigned char monthval;
144 unsigned short yearval;
220 bool set(
unsigned short y,
unsigned char m,
unsigned char d,
DateType t =
DATE_LOCAL);
233 bool system_set(
void);
239 unsigned char day(
void)
const {
return dayval; }
241 unsigned char month(
void)
const {
return monthval; }
243 unsigned short year(
void)
const {
return yearval; }
250 const char* day_name(
void);
257 const char* month_name(
void);
261 unsigned char days_in_month()
const;
267 unsigned char day_of_week()
const;
270 unsigned short day_of_year()
const;
282 Date operator++(
int);
292 Date operator--(
int);
300 static bool leap_year(
unsigned short y);
310 static unsigned char days_in_month(
unsigned short y,
unsigned char m);
320 static bool is_valid(
unsigned short y,
unsigned char m,
unsigned char d);
324 inline bool operator==(
const Date& d1,
const Date& d2)
325 {
return (d1.day() == d2.day() && d1.month() == d2.month() && d1.year() == d2.year()); }
327 inline bool operator>(
const Date& d1,
const Date& d2) {
328 return (d1.year() > d2.year() || (d1.year() == d2.year() && d1.month() > d2.month()) ||
329 (d1.year() == d2.year() && d1.month() == d2.month() && d1.day() > d2.day()));
332 inline bool operator!=(
const Date& d1,
const Date& d2) {
return !(d1 == d2); }
333 inline bool operator>=(
const Date& d1,
const Date& d2) {
return (d1 > d2 || d1 == d2); }
334 inline bool operator<(
const Date& d1,
const Date& d2) {
return (!(d1 > d2) && (d1 != d2)); }
335 inline bool operator<=(
const Date& d1,
const Date& d2) {
return (d1 == d2 || d1 < d2); }
351 unsigned char hourval;
352 unsigned char minval;
353 unsigned char secval;
384 void set(
unsigned char h,
unsigned char m,
unsigned char s = 0);
400 bool system_set(
void);
405 unsigned char hour(
void)
const {
return hourval; }
410 unsigned char minute(
void)
const {
return minval; }
415 unsigned char second(
void)
const {
return secval; }
428 Time operator++(
int);
438 Time operator--(
int);
448 static bool is_valid(
unsigned char h,
unsigned char m,
unsigned char s);
452 inline bool operator==(
const Time& t1,
const Time& t2) {
453 return (t1.hour() == t2.hour() && t1.minute() == t2.minute() && t1.second() == t2.second());
456 inline bool operator>(
const Time& t1,
const Time& t2) {
457 return (t1.hour() > t2.hour() ||
458 (t1.hour() == t2.hour() && t1.second() > t2.second()) ||
459 t1.second() == t2.second());
462 inline bool operator<(
const Time& t1,
const Time& t2) {
463 return (t1.hour() < t2.hour() ||
464 (t1.hour() == t2.hour() && t1.second() < t2.second()) ||
465 t1.second() == t2.second());
468 inline bool operator!=(
const Time& t1,
const Time& t2) {
return !(t1 == t2); }
469 inline bool operator>=(
const Time& t1,
const Time& t2) {
return (t1 > t2 || t1 == t2); }
470 inline bool operator<=(
const Time& t1,
const Time& t2) {
return (t1 == t2 || t1 < t2); }