8#include "Arp/System/Core/PrimitiveTypes.hpp" 
   12#ifndef ARP_USE_ARP_SYSTEM_CORE 
   18#ifndef ARP_INSIDE_ARP_H 
   19    #error Never include 'DateTime.hpp' directly, just include 'Arp.h' 
   32enum class DateTimeKind
 
   54    using String = BasicString<char8>;
 
   64    ARP_DEPRECATED(
"Use overload with DateTimeKind parameter instead.")
 
  105    ARP_DEPRECATED("Use overload with DateTimeKind parameter instead.")
 
  106    DateTime(
int year, 
int month, 
int day, 
int hour, 
int minute, 
int second, 
int millisecond, 
int microsecond);
 
  139    DateTime(
int year, 
int month, 
int day, 
int hour, 
int minute, 
int second, 
int millisecond, 
int microsecond, DateTimeKind kind);
 
  154    bool operator==(const 
DateTime& arg)const;
 
  158    bool operator!=(const 
DateTime& arg)const;
 
  162    bool operator>(const 
DateTime& arg)const;
 
  166    bool operator<(const 
DateTime& arg)const;
 
  170    bool operator>=(const 
DateTime& arg)const;
 
  174    bool operator<=(const 
DateTime& arg)const;
 
  230    DateTimeKind    
GetKind(
void)const;
 
  277    uint64      ToUnixMicrosecondTicks(
void)const;
 
  292    friend 
std::ostream& operator<<(
std::ostream& os, const 
DateTime& dateTime);
 
  293    friend 
std::istream& operator>>(
std::istream& is, 
DateTime& dateTime);
 
  296    int GetDatePart(
int part)const;
 
  299    static 
int64 DateToTicks(
int year, 
int month, 
int day);
 
  300    static 
int64 TimeToTicks(
int hour, 
int minute, 
int second);
 
  301    static 
int64 TimeToTicks(
int hour, 
int minute, 
int second, 
int millisecond, 
int microsecond);
 
  311    static const 
int kindShift = 62;
 
  312    static const 
uint64 kindMask = 3ULL << kindShift;
 
  313    static const 
uint64 ticksMask = ~kindMask;
 
  316    static const 
int64 ticksPerMicrosecond = 10;
 
  317    static const 
int64 ticksPerMillisecond = ticksPerMicrosecond * 1000;
 
  318    static const 
int64 ticksPerSecond = ticksPerMillisecond * 1000;
 
  319    static const 
int64 ticksPerMinute = ticksPerSecond * 60;
 
  320    static const 
int64 ticksPerHour = ticksPerMinute * 60;
 
  321    static const 
int64 ticksPerDay = ticksPerHour * 24;
 
  324    static const 
int daysPerYear = 365;
 
  326    static const 
int daysPer4Years = daysPerYear * 4 + 1;
 
  328    static const 
int daysPer100Years = daysPer4Years * 25 - 1;
 
  330    static const 
int daysPer400Years = daysPer100Years * 4 + 1;
 
  333    static const 
int daysTo1970 = daysPer400Years * 4 + daysPer100Years * 3 + daysPer4Years * 17 + daysPerYear;
 
  335    static const 
int daysTo1601 = daysPer400Years * 4;
 
  337    static const 
int daysTo10000 = daysPer400Years * 25 - 366;
 
  339    static const 
int daysToMonth365[];
 
  340    static const 
int daysToMonth366[];
 
  342    static const 
int datePartYear = 0;
 
  343    static const 
int datePartMonth = 2;
 
  344    static const 
int datePartDayOfYear = 1;
 
  345    static const 
int datePartDay = 3;
 
  348    static const 
int64 unix0Ticks = daysTo1970 * ticksPerDay; 
 
  349    static const 
int64 opcua0Ticks = daysTo1601 * ticksPerDay; 
 
  369    return this->
GetTicks() == arg.GetTicks();
 
  374    return this->
GetTicks() != arg.GetTicks();
 
  379    return this->
GetTicks() > arg.GetTicks();
 
  384    return this->
GetTicks() < arg.GetTicks();
 
  389    return this->
GetTicks() >= arg.GetTicks();
 
  394    return this->
GetTicks() <= arg.GetTicks();
 
  399    return (
int64)(this->data & ticksMask);
 
  404    return (DateTimeKind)(this->data >> kindShift);
 
  407inline DateTime DateTime::FromUnixMicrosecondTicks(
uint64 microseconds)
 
  409    return DateTime(unix0Ticks + (
uint64)microseconds * ticksPerMicrosecond, DateTimeKind::Utc);
 
  415    os << dateTime.ToIso8601String();
 
Value ToBinary(void) const
Converts this instance to its binary representation.
Definition: DateTime.cpp:351
 
static const int64 MinTicks
DEPRECATED.
Definition: DateTime.hpp:90
 
int64 ToUnixTimeMicroseconds(void) const
Converts this instance to unix time in microseconds (UTC).
Definition: DateTime.cpp:337
 
static DateTime FromIso8601String(const String &input)
Creates a DateTime from the as argument passed ISO8601 string.
Definition: DateTime.cpp:226
 
DateTimeKind GetKind(void) const
Gets the DateTimeKind of this instance.
Definition: DateTime.cpp:257
 
int GetDay(void) const
Gets the day of this instance.
Definition: DateTime.cpp:278
 
DateTime(void)
Default constructor.
 
int GetMillisecond(void) const
Gets the millisecond of this instance.
Definition: DateTime.cpp:306
 
String ToIso8601String(void) const
Converts this instance to an Iso8601 string .
Definition: DateTime.cpp:358
 
ARP_EXPORT friend bool operator<=(const DateTime &left, const DateTime &right)
Compares the left DateTime instance to the right one.
Definition: DateTime.cpp:130
 
static DateTime FromOpcUaTime(int64 opcUaTime)
Creates a DateTime from the argument passed in OpcUA time.
Definition: DateTime.cpp:218
 
Ticks GetTicks(void) const
Gets the ticks of this instance in units of 100 nanoseconds.
Definition: DateTime.cpp:250
 
ARP_EXPORT friend bool operator>=(const DateTime &left, const DateTime &right)
Compares the left DateTime instance to the right one.
Definition: DateTime.cpp:119
 
static const int64 MaxTicks
DEPRECATED.
Definition: DateTime.hpp:92
 
ARP_EXPORT friend bool operator==(const DateTime &left, const DateTime &right)
Compares the left DateTime instance to the right one.
Definition: DateTime.cpp:75
 
int GetYear(void) const
Gets the year of this instance.
Definition: DateTime.cpp:264
 
static bool IsLeapYear(int year)
Returns an indication whether the specified year is a leap year.
Definition: DateTime.cpp:243
 
static DateTime GetUtcNow(void)
Gets the current time in UTC.
Definition: DateTime.cpp:186
 
int64 ToOpcUaTime(void) const
Converts this instance to OpcUA time (UTC).
Definition: DateTime.cpp:344
 
int GetMinute(void) const
Gets the minute of this instance.
Definition: DateTime.cpp:292
 
ARP_EXPORT friend std::ostream & operator<<(std::ostream &os, const DateTime &value)
Writes the DateTime value to the given output streams in Iso8601 format.
Definition: DateTime.cpp:139
 
ARP_EXPORT friend bool operator>(const DateTime &left, const DateTime &right)
Compares the left DateTime instance to the right one.
Definition: DateTime.cpp:97
 
int GetHour(void) const
Gets the hour of this instance.
Definition: DateTime.cpp:285
 
ARP_EXPORT friend bool operator!=(const DateTime &left, const DateTime &right)
Compares the left DateTime instance to the right one.
Definition: DateTime.cpp:86
 
time_t ToUnixTime(void) const
Converts this instance to unix time (UTC).
Definition: DateTime.cpp:330
 
int GetSecond(void) const
Gets the second of this instance.
Definition: DateTime.cpp:299
 
ARP_EXPORT friend bool operator<(const DateTime &left, const DateTime &right)
Compares the left DateTime instance to the right one.
Definition: DateTime.cpp:108
 
bool IsEmpty(void) const
Checks if this instance represents a valid date.
Definition: DateTime.cpp:323
 
int GetMonth(void) const
Gets the month of this instance.
Definition: DateTime.cpp:271
 
int GetMicrosecond(void) const
Gets the microsecond of this instance.
Definition: DateTime.cpp:313
 
ARP_EXPORT friend std::istream & operator>>(std::istream &is, DateTime &value)
Reads the DateTime value from the given input streams in Iso8601 format.
Definition: DateTime.cpp:148
 
static DateTime FromUnixTime(time_t unixTime)
Creates a DateTime from the as argument passed unix time.
Definition: DateTime.cpp:202
 
static DateTime FromBinary(Value value)
Creates a DateTime from the as argument passed (internal) binary representation.
Definition: DateTime.cpp:235
 
static DateTime FromUnixTimeMicroseconds(int64 microseconds)
Creates a DateTime from the as argument passed unix time in microseconds.
Definition: DateTime.cpp:210
 
std::int64_t int64
The Arp integer type of 8 byte size.
Definition: PrimitiveTypes.hpp:39
 
std::uint64_t uint64
The Arp unsigned integer type of 8 byte size.
Definition: PrimitiveTypes.hpp:37
 
Root namespace for the PLCnext API
 
class ARP_DEPRECATED("Use Arp::Enum<T> instead.") EnumStrings
Deprecated! The class implements an adapter for enums to define the string literals of the enum entri...
Definition: EnumStrings.hxx:38
 
Namespace of the C++ standard library