Boost.Locale
date_time.hpp
1 //
2 // Copyright (c) 2009-2011 Artyom Beilis (Tonkikh)
3 //
4 // Distributed under the Boost Software License, Version 1.0.
5 // https://www.boost.org/LICENSE_1_0.txt
6 
7 #ifndef BOOST_LOCALE_DATE_TIME_HPP_INCLUDED
8 #define BOOST_LOCALE_DATE_TIME_HPP_INCLUDED
9 
10 #include <boost/locale/date_time_facet.hpp>
11 #include <boost/locale/formatting.hpp>
12 #include <boost/locale/hold_ptr.hpp>
13 #include <boost/locale/time_zone.hpp>
14 #include <locale>
15 #include <stdexcept>
16 #include <vector>
17 
18 #ifdef BOOST_MSVC
19 # pragma warning(push)
20 # pragma warning(disable : 4275 4251 4231 4660)
21 #endif
22 
23 namespace boost { namespace locale {
28 
30  class BOOST_SYMBOL_VISIBLE date_time_error : public std::runtime_error {
31  public:
33  date_time_error(const std::string& e) : std::runtime_error(e) {}
34  };
35 
44  int value;
45  date_time_period operator+() const { return *this; }
49 
52  };
53 
54  namespace period {
57  {
59  }
61  inline period_type era()
62  {
63  return period_type(marks::era);
64  }
66  inline period_type year()
67  {
68  return period_type(marks::year);
69  }
72  {
74  }
76  inline period_type month()
77  {
78  return period_type(marks::month);
79  }
81  inline period_type day()
82  {
83  return period_type(marks::day);
84  }
87  {
89  }
97  {
99  }
103  {
105  }
108  {
110  }
112  inline period_type hour()
113  {
114  return period_type(marks::hour);
115  }
118  {
119  return period_type(marks::hour_12);
120  }
123  {
124  return period_type(marks::am_pm);
125  }
128  {
129  return period_type(marks::minute);
130  }
133  {
134  return period_type(marks::second);
135  }
138  {
140  }
143  {
145  }
148  {
150  }
151 
153  inline date_time_period era(int v)
154  {
155  return date_time_period(era(), v);
156  }
158  inline date_time_period year(int v)
159  {
160  return date_time_period(year(), v);
161  }
164  {
165  return date_time_period(extended_year(), v);
166  }
168  inline date_time_period month(int v)
169  {
170  return date_time_period(month(), v);
171  }
173  inline date_time_period day(int v)
174  {
175  return date_time_period(day(), v);
176  }
179  {
180  return date_time_period(day_of_year(), v);
181  }
189  {
190  return date_time_period(day_of_week(), v);
191  }
195  {
197  }
200  {
201  return date_time_period(day_of_week_local(), v);
202  }
204  inline date_time_period hour(int v)
205  {
206  return date_time_period(hour(), v);
207  }
209  inline date_time_period hour_12(int v)
210  {
211  return date_time_period(hour_12(), v);
212  }
214  inline date_time_period am_pm(int v)
215  {
216  return date_time_period(am_pm(), v);
217  }
219  inline date_time_period minute(int v)
220  {
221  return date_time_period(minute(), v);
222  }
224  inline date_time_period second(int v)
225  {
226  return date_time_period(second(), v);
227  }
230  {
231  return date_time_period(week_of_year(), v);
232  }
235  {
236  return date_time_period(week_of_month(), v);
237  }
240  {
241  return date_time_period(first_day_of_week(), v);
242  }
243 
246  {
247  return date_time_period(month(), 0);
248  }
251  {
252  return date_time_period(month(), 1);
253  }
256  {
257  return date_time_period(month(), 2);
258  }
261  {
262  return date_time_period(month(), 3);
263  }
266  {
267  return date_time_period(month(), 4);
268  }
271  {
272  return date_time_period(month(), 5);
273  }
276  {
277  return date_time_period(month(), 6);
278  }
281  {
282  return date_time_period(month(), 7);
283  }
286  {
287  return date_time_period(month(), 8);
288  }
291  {
292  return date_time_period(month(), 9);
293  }
296  {
297  return date_time_period(month(), 10);
298  }
301  {
302  return date_time_period(month(), 11);
303  }
304 
307  {
308  return date_time_period(day_of_week(), 1);
309  }
312  {
313  return date_time_period(day_of_week(), 2);
314  }
317  {
318  return date_time_period(day_of_week(), 3);
319  }
322  {
323  return date_time_period(day_of_week(), 4);
324  }
327  {
328  return date_time_period(day_of_week(), 5);
329  }
332  {
333  return date_time_period(day_of_week(), 6);
334  }
337  {
338  return date_time_period(day_of_week(), 7);
339  }
342  {
343  return date_time_period(am_pm(), 0);
344  }
347  {
348  return date_time_period(am_pm(), 1);
349  }
350 
353  {
354  return date_time_period(f);
355  }
358  {
359  return date_time_period(f, -1);
360  }
361 
363  template<typename T>
365  {
366  return date_time_period(f, v);
367  }
368 
370  template<typename T>
372  {
373  return date_time_period(f, v);
374  }
376  template<typename T>
378  {
379  return date_time_period(f.type, f.value * v);
380  }
381 
383  template<typename T>
385  {
386  return date_time_period(f.type, f.value * v);
387  }
388 
389  } // namespace period
390 
396  public:
399 
402 
404  date_time_period_set(const date_time_period& fl) { basic_[0] = fl; }
405 
408  {
409  size_t n = size();
410  if(n < 4)
411  basic_[n] = f;
412  else
413  periods_.push_back(f);
414  }
415 
417  size_t size() const
418  {
419  if(basic_[0].type == period::period_type())
420  return 0;
421  if(basic_[1].type == period::period_type())
422  return 1;
423  if(basic_[2].type == period::period_type())
424  return 2;
425  if(basic_[3].type == period::period_type())
426  return 3;
427  return 4 + periods_.size();
428  }
429 
431  const date_time_period& operator[](size_t n) const
432  {
433  if(n >= size())
434  throw std::out_of_range("Invalid index to date_time_period");
435  if(n < 4)
436  return basic_[n];
437  else
438  return periods_[n - 4];
439  }
440 
441  private:
442  date_time_period basic_[4];
443  std::vector<date_time_period> periods_;
444  };
445 
448  {
450  for(unsigned i = 0; i < b.size(); i++)
451  s.add(b[i]);
452  return s;
453  }
454 
457  {
459  for(unsigned i = 0; i < b.size(); i++)
460  s.add(-b[i]);
461  return s;
462  }
463 
469  class BOOST_LOCALE_DECL calendar {
470  public:
475  calendar(std::ios_base& ios);
476 
480  calendar(const std::locale& l, const std::string& zone);
481 
485  calendar(const std::locale& l);
486 
490 
491  calendar(const std::string& zone);
492 
496  calendar();
497  ~calendar();
498 
500  calendar(const calendar& other);
502  calendar& operator=(const calendar& other);
503 
505  int minimum(period::period_type f) const;
508  int greatest_minimum(period::period_type f) const;
510  int maximum(period::period_type f) const;
512  int least_maximum(period::period_type f) const;
513 
515  int first_day_of_week() const;
516 
518  std::locale get_locale() const;
520  std::string get_time_zone() const;
521 
523  bool is_gregorian() const;
524 
526  bool operator==(const calendar& other) const;
528  bool operator!=(const calendar& other) const;
529 
530  private:
531  friend class date_time;
532  std::locale locale_;
533  std::string tz_;
535  };
536 
560 
561  class BOOST_LOCALE_DECL date_time {
562  public:
566  date_time();
567 
569  date_time(const date_time& other);
570  // Move construct a new date_time
571  date_time(date_time&& other) = default;
572 
574  date_time(const date_time& other, const date_time_period_set& set);
575 
577  date_time& operator=(const date_time& other);
578  // Move assign a date_time
579  date_time& operator=(date_time&& other) = default;
580 
584  date_time(double time);
585 
587  date_time(double time, const calendar& cal);
588 
590  date_time(const calendar& cal);
591 
595  date_time(const date_time_period_set& set);
596 
598  date_time(const date_time_period_set& set, const calendar& cal);
599 
601  date_time& operator=(const date_time_period_set& f);
602 
604  void set(period::period_type f, int v);
605 
607  int get(period::period_type f) const;
609  int operator/(period::period_type f) const { return get(f); }
610 
612  date_time operator+(period::period_type f) const { return *this + date_time_period(f); }
614  date_time operator-(period::period_type f) const { return *this - date_time_period(f); }
619 
621  date_time operator<<(period::period_type f) const { return *this << date_time_period(f); }
623  date_time operator>>(period::period_type f) const { return *this >> date_time_period(f); }
628 
630  date_time operator+(const date_time_period& v) const;
632  date_time operator-(const date_time_period& v) const;
634  date_time& operator+=(const date_time_period& v);
636  date_time& operator-=(const date_time_period& v);
637 
639  date_time operator<<(const date_time_period& v) const;
641  date_time operator>>(const date_time_period& v) const;
643  date_time& operator<<=(const date_time_period& v);
645  date_time& operator>>=(const date_time_period& v);
646 
648  date_time operator+(const date_time_period_set& v) const;
650  date_time operator-(const date_time_period_set& v) const;
652  date_time& operator+=(const date_time_period_set& v);
654  date_time& operator-=(const date_time_period_set& v);
655 
657  date_time operator<<(const date_time_period_set& v) const;
659  date_time operator>>(const date_time_period_set& v) const;
661  date_time& operator<<=(const date_time_period_set& v);
663  date_time& operator>>=(const date_time_period_set& v);
664 
668  double time() const;
673  void time(double v);
674 
676  bool operator==(const date_time& other) const;
678  bool operator!=(const date_time& other) const;
680  bool operator<(const date_time& other) const;
682  bool operator>(const date_time& other) const;
684  bool operator<=(const date_time& other) const;
686  bool operator>=(const date_time& other) const;
687 
689  void swap(date_time& other);
690 
692  int difference(const date_time& other, period::period_type f) const;
693 
695  int minimum(period::period_type f) const;
698  int maximum(period::period_type f) const;
699 
701  bool is_in_daylight_saving_time() const;
702 
703  private:
705  };
706 
718  template<typename CharType>
719  std::basic_ostream<CharType>& operator<<(std::basic_ostream<CharType>& out, const date_time& t)
720  {
721  double time_point = t.time();
722  uint64_t display_flags = ios_info::get(out).display_flags();
723  if(display_flags == flags::date || display_flags == flags::time || display_flags == flags::datetime
724  || display_flags == flags::strftime)
725  {
726  out << time_point;
727  } else {
728  ios_info::get(out).display_flags(flags::datetime);
729  out << time_point;
730  ios_info::get(out).display_flags(display_flags);
731  }
732  return out;
733  }
734 
738  template<typename CharType>
739  std::basic_istream<CharType>& operator>>(std::basic_istream<CharType>& in, date_time& t)
740  {
741  double v;
742  uint64_t display_flags = ios_info::get(in).display_flags();
743  if(display_flags == flags::date || display_flags == flags::time || display_flags == flags::datetime
744  || display_flags == flags::strftime)
745  {
746  in >> v;
747  } else {
748  ios_info::get(in).display_flags(flags::datetime);
749  in >> v;
750  ios_info::get(in).display_flags(display_flags);
751  }
752  if(!in.fail())
753  t.time(v);
754  return in;
755  }
756 
757 #ifdef BOOST_MSVC
758 # pragma warning(push)
759 # pragma warning(disable : 4512) // assignment operator could not be generated
760 #endif
761 
769  public:
772  date_time_duration(const date_time& first, const date_time& second) : s_(first), e_(second) {}
773 
775  int get(period::period_type f) const { return start().difference(end(), f); }
777  int operator/(period::period_type f) const { return start().difference(end(), f); }
778 
780  const date_time& start() const { return s_; }
782  const date_time& end() const { return e_; }
783 
784  private:
785  const date_time& s_;
786  const date_time& e_;
787  };
788 #ifdef BOOST_MSVC
789 # pragma warning(pop)
790 #endif
791 
794  inline date_time_duration operator-(const date_time& later, const date_time& earlier)
795  {
796  return date_time_duration(earlier, later);
797  }
798 
799  namespace period {
801  inline int era(const date_time& dt)
802  {
803  return dt.get(era());
804  }
807  inline int year(const date_time& dt)
808  {
809  return dt.get(year());
810  }
813  inline int extended_year(const date_time& dt)
814  {
815  return dt.get(extended_year());
816  }
818  inline int month(const date_time& dt)
819  {
820  return dt.get(month());
821  }
823  inline int day(const date_time& dt)
824  {
825  return dt.get(day());
826  }
828  inline int day_of_year(const date_time& dt)
829  {
830  return dt.get(day_of_year());
831  }
838  inline int day_of_week(const date_time& dt)
839  {
840  return dt.get(day_of_week());
841  }
845  inline int day_of_week_in_month(const date_time& dt)
846  {
847  return dt.get(day_of_week_in_month());
848  }
851  inline int day_of_week_local(const date_time& dt)
852  {
853  return dt.get(day_of_week_local());
854  }
856  inline int hour(const date_time& dt)
857  {
858  return dt.get(hour());
859  }
861  inline int hour_12(const date_time& dt)
862  {
863  return dt.get(hour_12());
864  }
866  inline int am_pm(const date_time& dt)
867  {
868  return dt.get(am_pm());
869  }
871  inline int minute(const date_time& dt)
872  {
873  return dt.get(minute());
874  }
876  inline int second(const date_time& dt)
877  {
878  return dt.get(second());
879  }
881  inline int week_of_year(const date_time& dt)
882  {
883  return dt.get(week_of_year());
884  }
886  inline int week_of_month(const date_time& dt)
887  {
888  return dt.get(week_of_month());
889  }
892  inline int first_day_of_week(const date_time& dt)
893  {
894  return dt.get(first_day_of_week());
895  }
896 
899  inline int era(const date_time_duration& dt)
900  {
901  return dt.get(era());
902  }
904  inline int year(const date_time_duration& dt)
905  {
906  return dt.get(year());
907  }
910  inline int extended_year(const date_time_duration& dt)
911  {
912  return dt.get(extended_year());
913  }
915  inline int month(const date_time_duration& dt)
916  {
917  return dt.get(month());
918  }
920  inline int day(const date_time_duration& dt)
921  {
922  return dt.get(day());
923  }
925  inline int day_of_year(const date_time_duration& dt)
926  {
927  return dt.get(day_of_year());
928  }
930  inline int day_of_week(const date_time_duration& dt)
931  {
932  return dt.get(day_of_week());
933  }
937  {
938  return dt.get(day_of_week_in_month());
939  }
941  inline int day_of_week_local(const date_time_duration& dt)
942  {
943  return dt.get(day_of_week_local());
944  }
946  inline int hour(const date_time_duration& dt)
947  {
948  return dt.get(hour());
949  }
951  inline int hour_12(const date_time_duration& dt)
952  {
953  return dt.get(hour_12());
954  }
956  inline int am_pm(const date_time_duration& dt)
957  {
958  return dt.get(am_pm());
959  }
961  inline int minute(const date_time_duration& dt)
962  {
963  return dt.get(minute());
964  }
966  inline int second(const date_time_duration& dt)
967  {
968  return dt.get(second());
969  }
971  inline int week_of_year(const date_time_duration& dt)
972  {
973  return dt.get(week_of_year());
974  }
976  inline int week_of_month(const date_time_duration& dt)
977  {
978  return dt.get(week_of_month());
979  }
981  inline int first_day_of_week(const date_time_duration& dt)
982  {
983  return dt.get(first_day_of_week());
984  }
985 
986  } // namespace period
987 
989 
990 }} // namespace boost::locale
991 
992 #ifdef BOOST_MSVC
993 # pragma warning(pop)
994 #endif
995 
1001 
1002 #endif
date_time & operator>>=(period::period_type f)
roll backward a date by single period f.
Definition: date_time.hpp:627
period_type am_pm()
Get period_type for: am or pm marker [0..1].
Definition: date_time.hpp:122
int get(period::period_type f) const
get specific period f value
period_type week_of_year()
Get period_type for: The week number in the year.
Definition: date_time.hpp:137
period_type minute()
Get period_type for: minute [0..59].
Definition: date_time.hpp:127
The week number within current month.
Definition: date_time_facet.hpp:50
date_time_error(const std::string &e)
Constructor of date_time_error class.
Definition: date_time.hpp:33
period::period_type type
The type of period, i.e. era, year, day etc.
Definition: date_time.hpp:43
Definition: date_time_facet.hpp:41
period_type extended_year()
Get period_type for: Extended year for Gregorian/Julian calendars, where 1 BC == 0,...
Definition: date_time.hpp:71
date_time_period saturday()
Get predefined constant for Saturday.
Definition: date_time.hpp:336
date_time_period_set()
Default constructor - empty set.
Definition: date_time.hpp:398
date_time & operator+=(period::period_type f)
add single period f to the current date_time
Definition: date_time.hpp:616
int get(period::period_type f) const
find a difference in terms of period_type f
Definition: date_time.hpp:775
Definition: date_time_facet.hpp:36
Year, it is calendar specific, for example 2011 in Gregorian calendar.
Definition: date_time_facet.hpp:31
this class that represents a set of periods,
Definition: date_time.hpp:395
date_time_period january()
Get predefined constant for January.
Definition: date_time.hpp:245
date_time & operator<<=(period::period_type f)
roll forward a date by single period f.
Definition: date_time.hpp:625
date_time_period november()
Get predefined constant for November.
Definition: date_time.hpp:295
This class represents a period: a pair of two date_time objects.
Definition: date_time.hpp:768
date_time_period_set operator+(const date_time_period_set &a, const date_time_period_set &b)
Append two periods sets. Note this operator is not commutative.
Definition: date_time.hpp:447
const date_time_period & operator[](size_t n) const
Get item at position n the set, n should be in range [0,size)
Definition: date_time.hpp:431
Generate boundary analysis facet.
date_time_period march()
Get predefined constant for March.
Definition: date_time.hpp:255
period_type day_of_week()
Definition: date_time.hpp:96
bool operator>(const segment< IteratorL > &l, const segment< IteratorR > &r)
Compare two segments.
Definition: segment.hpp:179
The number of day in year, starting from 1, in Gregorian [1..366].
Definition: date_time_facet.hpp:35
bool operator==(const BaseIterator &l, const boundary_point< BaseIterator > &r)
Check if the boundary point r points to same location as an iterator l.
Definition: boundary_point.hpp:88
date_time_period monday()
Get predefined constant for Monday.
Definition: date_time.hpp:311
date_time_period february()
Get predefined constant for February.
Definition: date_time.hpp:250
bool operator<(const segment< IteratorL > &l, const segment< IteratorR > &r)
Compare two segments.
Definition: segment.hpp:167
date_time_period april()
Get predefined constant for April.
Definition: date_time.hpp:260
period_type first_day_of_week()
Get period_type for: First day of week, constant, for example Sunday in US = 1, Monday in France = 2.
Definition: date_time.hpp:147
this class provides an access to general calendar information.
Definition: date_time.hpp:469
date_time_period august()
Get predefined constant for August.
Definition: date_time.hpp:280
int operator/(period::period_type f) const
Syntactic sugar for get(f)
Definition: date_time.hpp:777
date_time_period operator+() const
Operator + returns copy of itself.
Definition: date_time.hpp:46
date_time_period am()
Get predefined constant for AM (Ante Meridiem)
Definition: date_time.hpp:341
date_time_period october()
Get predefined constant for October.
Definition: date_time.hpp:290
date_time operator<<(period::period_type f) const
roll forward a date by single period f.
Definition: date_time.hpp:621
void add(date_time_period f)
Append date_time_period f to the set.
Definition: date_time.hpp:407
date_time operator+(period::period_type f) const
add single period f to the current date_time
Definition: date_time.hpp:612
int difference(const date_time &other, period::period_type f) const
calculate the distance from this date_time to other in terms of periods f
bool operator>=(const segment< IteratorL > &l, const segment< IteratorR > &r)
Compare two segments.
Definition: segment.hpp:185
bool operator!=(const BaseIterator &l, const boundary_point< BaseIterator > &r)
Check if the boundary point r points to different location from an iterator l.
Definition: boundary_point.hpp:94
date_time_period december()
Get predefined constant for December.
Definition: date_time.hpp:300
period_type era()
Get period_type for: Era i.e. AC, BC in Gregorian and Julian calendar, range [0,1].
Definition: date_time.hpp:61
period_type hour()
Get period_type for: 24 clock hour [0..23].
Definition: date_time.hpp:112
a smart pointer similar to std::unique_ptr but the underlying object has the same constness as the po...
Definition: hold_ptr.hpp:16
date_time_period_set operator-(const date_time_period_set &a, const date_time_period_set &b)
Append two period sets when all periods of set change their sign.
Definition: date_time.hpp:456
void display_flags(uint64_t flags)
Set flags that define how to format data, e.g. number, spell, currency etc.
static ios_info & get(std::ios_base &ios)
Get ios_info instance for specific stream object.
The week number in the year.
Definition: date_time_facet.hpp:49
24 clock hour [0..23]
Definition: date_time_facet.hpp:44
Special invalid value, should not be used directly.
Definition: date_time_facet.hpp:29
The day of month, calendar specific, in Gregorian [1..31].
Definition: date_time_facet.hpp:34
period_type day_of_week_local()
Get period_type for: Local day of week, for example in France Monday is 1, in US Sunday is 1,...
Definition: date_time.hpp:107
minute [0..59]
Definition: date_time_facet.hpp:47
The month of year, calendar specific, in Gregorian [0..11].
Definition: date_time_facet.hpp:33
Local day of week, for example in France Monday is 1, in US Sunday is 1, [1..7].
Definition: date_time_facet.hpp:43
date_time_period operator-(period::period_type f)
convert period_type to date_time_period(f,-1)
Definition: date_time.hpp:357
date_time_period operator *(period::period_type f, T v)
Create date_time_period of type f with value v.
Definition: date_time.hpp:364
period_type day_of_week_in_month()
Definition: date_time.hpp:102
12 clock hour [0..11]
Definition: date_time_facet.hpp:45
date_time operator-(period::period_type f) const
subtract single period f from the current date_time
Definition: date_time.hpp:614
std::basic_ostream< CharType > & operator<<(std::basic_ostream< CharType > &out, const date_time &t)
Definition: date_time.hpp:719
This class represents a pair of period_type and the integer values that describes its amount....
Definition: date_time.hpp:42
date_time_period pm()
Get predefined constant for PM (Post Meridiem)
Definition: date_time.hpp:346
period_type day()
Get period_type for: The day of month, calendar specific, in Gregorian [1..31].
Definition: date_time.hpp:81
period_type year()
Get period_type for: Year, it is calendar specific, for example 2011 in Gregorian calendar.
Definition: date_time.hpp:66
period_type week_of_month()
Get period_type for: The week number within current month.
Definition: date_time.hpp:142
date_time_period wednesday()
Get predefined constant for Wednesday.
Definition: date_time.hpp:321
This error is thrown in case of invalid state that occurred.
Definition: date_time.hpp:30
date_time_period thursday()
Get predefined constant for Thursday.
Definition: date_time.hpp:326
am or pm marker [0..1]
Definition: date_time_facet.hpp:46
date_time_period_set(period::period_type f)
Create a set of single period with value 1.
Definition: date_time.hpp:401
date_time_duration(const date_time &first, const date_time &second)
Definition: date_time.hpp:772
bool operator<=(const segment< IteratorL > &l, const segment< IteratorR > &r)
Compare two segments.
Definition: segment.hpp:173
const date_time & start() const
Get starting point.
Definition: date_time.hpp:780
date_time & operator-=(period::period_type f)
subtract single period f from the current date_time
Definition: date_time.hpp:618
date_time_period sunday()
Get predefined constant for Sunday.
Definition: date_time.hpp:306
size_t size() const
Get number if items in list.
Definition: date_time.hpp:417
date_time_period friday()
Get predefined constant for Friday.
Definition: date_time.hpp:331
const date_time & end() const
Get ending point.
Definition: date_time.hpp:782
date_time_period tuesday()
Get predefined constant for Tuesday.
Definition: date_time.hpp:316
int value
Definition: date_time.hpp:44
date_time_period operator+(period::period_type f)
convert period_type to date_time_period(f,1)
Definition: date_time.hpp:352
period_type day_of_year()
Get period_type for: The number of day in year, starting from 1, in Gregorian [1.....
Definition: date_time.hpp:86
date_time_period_set(const date_time_period &fl)
Create a set of single period fl.
Definition: date_time.hpp:404
Era i.e. AC, BC in Gregorian and Julian calendar, range [0,1].
Definition: date_time_facet.hpp:30
First day of week, constant, for example Sunday in US = 1, Monday in France = 2.
Definition: date_time_facet.hpp:51
period_type hour_12()
Get period_type for: 12 clock hour [0..11].
Definition: date_time.hpp:117
std::basic_istream< CharType > & operator>>(std::basic_istream< CharType > &in, date_time &t)
Definition: date_time.hpp:739
Extended year for Gregorian/Julian calendars, where 1 BC == 0, 2 BC == -1.
Definition: date_time_facet.hpp:32
period_type invalid()
Get period_type for: special invalid value, should not be used directly.
Definition: date_time.hpp:56
date_time_period june()
Get predefined constant for June.
Definition: date_time.hpp:270
date_time_period may()
Get predefined constant for May.
Definition: date_time.hpp:265
this class represents a date time and allows to perform various operation according to the locale set...
Definition: date_time.hpp:561
date_time operator>>(period::period_type f) const
roll backward a date by single period f.
Definition: date_time.hpp:623
date_time_period operator-() const
Operator -, switches the sign of period.
Definition: date_time.hpp:48
std::ios_base & time(std::ios_base &ios)
Format a time, number is treated as POSIX time.
Definition: formatting.hpp:239
date_time_period(period::period_type f=period::period_type(), int v=1)
Constructor that creates date_time_period from period_type f and a value v – default 1.
Definition: date_time.hpp:51
period_type second()
Get period_type for: second [0..59].
Definition: date_time.hpp:132
second [0..59]
Definition: date_time_facet.hpp:48
period_type month()
Get period_type for: The month of year, calendar specific, in Gregorian [0..11].
Definition: date_time.hpp:76
date_time_period july()
Get predefined constant for July.
Definition: date_time.hpp:275
date_time_period september()
Get predefined constant for September.
Definition: date_time.hpp:285
int operator/(period::period_type f) const
syntactic sugar for get(f)
Definition: date_time.hpp:609
This class holds a type that represents certain period of time like year, hour, second and so on.
Definition: date_time_facet.hpp:65