blob: 1f9f19d2c19603c30b784595fbc035fe8b961b58 [file] [log] [blame]
// Copyright 2014 PDFium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
#ifndef XFA_FGAS_LOCALIZATION_FGAS_DATETIME_H_
#define XFA_FGAS_LOCALIZATION_FGAS_DATETIME_H_
#include "core/fxcrt/fx_system.h"
class CFX_Unitime;
class CFX_DateTime;
bool FX_IsLeapYear(int32_t iYear);
uint8_t FX_DaysInMonth(int32_t iYear, uint8_t iMonth);
class CFX_Unitime {
public:
CFX_Unitime() { m_iUnitime = 0; }
explicit CFX_Unitime(int64_t iUnitime) { m_iUnitime = iUnitime; }
int64_t ToInt64() const { return m_iUnitime; }
void Now();
void Set(int32_t year,
uint8_t month,
uint8_t day,
uint8_t hour,
uint8_t minute,
uint8_t second,
uint16_t millisecond);
void Set(int64_t t) { m_iUnitime = t; }
int32_t GetYear() const;
uint8_t GetMonth() const;
uint8_t GetDay() const;
uint8_t GetHour() const;
uint8_t GetMinute() const;
uint8_t GetSecond() const;
uint16_t GetMillisecond() const;
CFX_Unitime operator+(const CFX_Unitime& t2) const {
return CFX_Unitime(m_iUnitime + t2.m_iUnitime);
}
private:
int64_t m_iUnitime;
};
#if _FX_OS_ != _FX_ANDROID_
#pragma pack(push, 1)
#endif
struct FX_TIMEZONE {
int8_t tzHour;
uint8_t tzMinute;
};
#if _FX_OS_ != _FX_ANDROID_
#pragma pack(pop)
#endif
class CFX_DateTime {
public:
CFX_DateTime() {}
~CFX_DateTime() {}
bool Set(int32_t year, uint8_t month, uint8_t day);
int32_t GetDayOfWeek() const;
private:
#if _FX_OS_ != _FX_ANDROID_
#pragma pack(push, 1)
#endif
struct FX_DATE {
int32_t year;
uint8_t month;
uint8_t day;
};
struct FX_TIME {
uint8_t hour;
uint8_t minute;
uint8_t second;
uint16_t millisecond;
};
struct FX_DATETIME {
union {
FX_DATE sDate;
FX_DATE aDate;
} Date;
union {
FX_TIME sTime;
FX_TIME aTime;
} Time;
};
#if _FX_OS_ != _FX_ANDROID_
#pragma pack(pop)
#endif
FX_DATETIME m_DateTime;
};
#endif // XFA_FGAS_LOCALIZATION_FGAS_DATETIME_H_