@@ -603,14 +603,21 @@ class datetime
603
603
}
604
604
}
605
605
606
- datetime () : m_interval(0 ) {}
606
+ datetime () : m_interval(0 ) { }
607
607
608
608
// / <summary>
609
- // / Creates <c>datetime</c> from a string representing time in UTC in RFC 1123 format.
609
+ // / Creates <c>datetime</c> from a string representing time in UTC in RFC 1123 or ISO 8601 format.
610
610
// / </summary>
611
611
// / <returns>Returns a <c>datetime</c> of zero if not successful.</returns>
612
612
static _ASYNCRTIMP datetime __cdecl from_string (const utility::string_t & timestring, date_format format = RFC_1123);
613
613
614
+ // / <summary>
615
+ // / Creates <c>datetime</c> from a string representing time in UTC in RFC 1123 or ISO 8601 format.
616
+ // / </summary>
617
+ // / <returns>Returns <c>datetime::maximum()</c> if not successful.</returns>
618
+ static _ASYNCRTIMP datetime __cdecl from_string_maximum_error (const utility::string_t & timestring,
619
+ date_format format = RFC_1123);
620
+
614
621
// / <summary>
615
622
// / Returns a string representation of the <c>datetime</c>.
616
623
// / </summary>
@@ -621,20 +628,22 @@ class datetime
621
628
// / </summary>
622
629
interval_type to_interval () const { return m_interval; }
623
630
631
+ static datetime from_interval (interval_type interval) { return datetime (interval); }
632
+
624
633
datetime operator -(interval_type value) const { return datetime (m_interval - value); }
625
634
626
635
datetime operator +(interval_type value) const { return datetime (m_interval + value); }
627
636
628
637
bool operator ==(datetime dt) const { return m_interval == dt.m_interval ; }
629
638
630
639
bool operator !=(const datetime& dt) const { return !(*this == dt); }
631
-
640
+
632
641
bool operator >(const datetime& dt) const { return this ->m_interval > dt.m_interval ; }
633
-
642
+
634
643
bool operator <(const datetime& dt) const { return this ->m_interval < dt.m_interval ; }
635
-
644
+
636
645
bool operator >=(const datetime& dt) const { return this ->m_interval >= dt.m_interval ; }
637
-
646
+
638
647
bool operator <=(const datetime& dt) const { return this ->m_interval <= dt.m_interval ; }
639
648
640
649
static interval_type from_milliseconds (unsigned int milliseconds) { return milliseconds * _msTicks; }
@@ -649,6 +658,8 @@ class datetime
649
658
650
659
bool is_initialized () const { return m_interval != 0 ; }
651
660
661
+ static datetime maximum () { return datetime (static_cast <interval_type>(-1 )); }
662
+
652
663
private:
653
664
friend int operator -(datetime t1, datetime t2);
654
665
@@ -659,7 +670,7 @@ class datetime
659
670
static const interval_type _dayTicks = 24 * 60 * 60 * _secondTicks;
660
671
661
672
// Private constructor. Use static methods to create an instance.
662
- datetime (interval_type interval) : m_interval(interval) {}
673
+ datetime (interval_type interval) : m_interval(interval) { }
663
674
664
675
// Storing as hundreds of nanoseconds 10e-7, i.e. 1 here equals 100ns.
665
676
interval_type m_interval;
0 commit comments