PLCnext API Documentation 25.0.2.69
DateTime.hpp
1
2//
3// Copyright Phoenix Contact GmbH & Co. KG
4//
6#pragma once
7#define ARP_INSIDE_ARP_BASE_CORE_ARP_H
8#include "Arp/Base/Core/PimplPtr.hxx"
9#include "Arp/Base/Core/Detail/DateTimeKind.hpp"
10#include "Arp/Base/Core/Detail/PrimitiveTypes.hpp"
11#include "Arp/Base/Core/Detail/String.hpp"
12#include <ctime>
13#include <iosfwd>
14
15namespace Arp { namespace Base { namespace Core
16{
17
26class ARP_EXPORT DateTime
27{
28public: // Impl forward declaration
29 class Impl;
30 friend class Impl;
31
32public: // usings
33 using Value = uint64;
34 using Ticks = int64;
35
36public: // construction/destruction/assignment
37 DateTime(void);
38 DateTime(int64 ticks, DateTimeKind kind);
39 DateTime(int year, int month, int day, int hour, int minute, int second, int millisecond, int microsecond, DateTimeKind kind);
40
41public: // operators
42 ARP_EXPORT friend bool operator==(const DateTime& left, const DateTime& right);
43 ARP_EXPORT friend bool operator!=(const DateTime& left, const DateTime& right);
44 ARP_EXPORT friend bool operator> (const DateTime& left, const DateTime& right);
45 ARP_EXPORT friend bool operator< (const DateTime& left, const DateTime& right);
46 ARP_EXPORT friend bool operator>=(const DateTime& left, const DateTime& right);
47 ARP_EXPORT friend bool operator<=(const DateTime& left, const DateTime& right);
48
49 ARP_EXPORT friend std::ostream& operator<<(std::ostream& os, const DateTime& value);
50 ARP_EXPORT friend std::istream& operator>>(std::istream& is, DateTime& value);
51
52public: // static properties
53 static DateTime GetUtcMin(void);
54 static DateTime GetUtcMax(void);
55 static int64 GetMinTicks(void);
56 static int64 GetMaxTicks(void);
57
58public: // static operations
59 static DateTime GetUtcNow(void);
60 static DateTime GetLocalNow(void);
61 static DateTime FromUnixTime(time_t unixTime);
62 static DateTime FromUnixTimeMicroseconds(int64 microseconds);
63 static DateTime FromOpcUaTime(int64 opcUaTime);
64 static DateTime FromIso8601String(const String& input);
65 static DateTime FromBinary(Value value);
66 static bool IsLeapYear(int year);
67
68public: // setter/getter operations
69 Ticks GetTicks(void)const;
70 DateTimeKind GetKind(void)const;
71 int GetYear(void)const;
72 int GetMonth(void)const;
73 int GetDay(void)const;
74 int GetHour(void)const;
75 int GetMinute(void)const;
76 int GetSecond(void)const;
77 int GetMillisecond(void)const;
78 int GetMicrosecond(void)const;
79 bool IsEmpty(void)const;
80
81public: // operations
82 time_t ToUnixTime(void)const;
83 int64 ToUnixTimeMicroseconds(void)const;
84 Value ToBinary(void)const;
85 int64 ToOpcUaTime(void)const;
86 String ToIso8601String(void)const;
87
88public: // deprecated static const fields
89 ARP_DEPRECATED("Use DateTime::GetMinTicks() instead")
90 static const int64 MinTicks;
91 ARP_DEPRECATED("Use DateTime::GetMaxTicks() instead")
92 static const int64 MaxTicks;
93
94private: // Impl methods
95 DateTime(const Impl& impl);
96
97private: // fields
98 Value value = 0;
99};
100
101}}} // end of namespace Arp::Base::Core
102
104template<> struct fmt::formatter<Arp::Base::Core::DateTime>: public fmt::ostream_formatter {};
This class contains date and time informations.
Definition: DateTime.hpp:27
DateTime(void)
Default constructor.
This class represents the Arp String. The implementation is based on std::string.
Definition: String.hpp:39
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 fmtlib.
Definition: BasicFormatter.hxx:107