/******************************************************** * DateTime.h * * * * XFX DateTime definition file * * Copyright © XFX Team. All Rights Reserved * ********************************************************/ #ifndef _SYSTEM_DATETIME_ #define _SYSTEM_DATETIME_ #include "Globalization/Calendar.h" #include "Globalization/Enums.h" #include "Enums.h" #include "Interfaces.h" #include "Types.h" using namespace System::Globalization; namespace System { class String; struct TimeSpan; // Represents an instant in time, typically expressed as a date and time of day. struct DateTime : IComparable, IEquatable, Object { private: static const long long TicksMask; static const long long KindMask; static const int KindShift; static const long long w32file_epoch; static const long long MAX_VALUE_TICKS; static const long long UnixEpoch; long long encoded; int AbsoluteDays(int year, int month, int day); void InvalidTickValue(long long ticks); DateTime Add(double value, int scale); public: DateTime Date() const; int Day() const; DayOfWeek_t DayOfWeek() const; int DayOfYear() const; int Hour() const; DateTimeKind_t Kind() const; int Millisecond() const; int Minute() const; int Month() const; static DateTime Now(); int Second() const; long long Ticks() const; TimeSpan TimeOfDay() const; static DateTime Today(); static DateTime UtcNow(); int Year()const; static const DateTime MaxValue; static const DateTime MinValue; DateTime(int year, int month, int day); DateTime(int year, int month, int day, Calendar calendar); DateTime(int year, int month, int day, int hour, int minute, int second); DateTime(int year, int month, int day, int hour, int minute, int second, DateTimeKind_t kind); DateTime(int year, int month, int day, int hour, int minute, int second, Calendar calendar); DateTime(int year, int month, int day, int hour, int minute, int second, int millisecond); DateTime(int year, int month, int day, int hour, int minute, int second, int millisecond, DateTimeKind_t kind); DateTime(int year, int month, int day, int hour, int minute, int second, int millisecond, Calendar calendar); DateTime(int year, int month, int day, int hour, int minute, int second, int millisecond, Calendar calendar, DateTimeKind_t kind); DateTime(long long ticks); DateTime(long long ticks, DateTimeKind_t kind); DateTime(const DateTime &obj); //Copy constructor DateTime Add(const TimeSpan value); DateTime AddDays(double value); DateTime AddHours(double value); DateTime AddMilliseconds(double value); DateTime AddMinutes(double value); DateTime AddMonths(int months); DateTime AddSeconds(double value); DateTime AddTicks(long long value); DateTime AddYears(int value); static int Compare(const DateTime t1, const DateTime t2); int CompareTo(const DateTime value) const; static int DaysInMonth(int year, int month); bool Equals(const Object* obj) const; bool Equals(const DateTime obj) const; bool static Equals(const DateTime t1, const DateTime t2); static DateTime FromFileTime(long long fileTime); static DateTime FromFileTimeUtc(long long fileTime); static DateTime FromOADate(double d); String *GetDateTimeFormats(); String *GetDateTimeFormats(char format); String *GetDateTimeFormats(char format, IFormatProvider* formatProvider); String *GetDateTimeFormats(IFormatProvider* formatProvider); int GetHashCode() const; int GetType() const; bool IsDaylighSavingTime(); static bool IsLeapYear(int year); static DateTime Parse(String s); static DateTime Parse(String s, IFormatProvider* formatProvider); static DateTime Parse(String s, IFormatProvider* formatProvider, DateTimeStyles_t styles); static DateTime ParseExact(String s, String format, IFormatProvider* formatProvider); static DateTime ParseExact(String s, String format, IFormatProvider* formatProvider, DateTimeStyles_t style); static DateTime ParseExact(String s, String formats[], IFormatProvider* formatProvider, DateTimeStyles_t style); static DateTime ParseExact(DateTime value, DateTimeKind kind); TimeSpan Subtract(const DateTime value); DateTime Subtract(const TimeSpan value); long long ToFileTime(); long long ToFileTimeUtc(); DateTime ToLocalTime(); const char* ToLongDateString(); const char* ToLongTimeString(); double ToOADate(); const char* ToShortDateString(); const char* ToShortTimeString(); const char* ToString() const; const char* ToString(IFormatProvider* provider); const char* ToString(const String& format); const char* ToString(const String& format, IFormatProvider* provider); DateTime ToUniversalTime(); DateTime operator +(const TimeSpan other); bool operator==(const DateTime& other) const; bool operator >(const DateTime other) const; bool operator>=(const DateTime other) const; bool operator!=(const DateTime& other) const; bool operator <(const DateTime other) const; bool operator<=(const DateTime other) const; TimeSpan operator-(const DateTime other); DateTime operator-(const TimeSpan t); }; } #endif //_DATETIME_