// 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_