boost::locale::abstract_calendar Class Referenceabstract

`#include <boost/locale/date_time_facet.hpp>`

## Public Types

enum | value_type { absolute_minimum , actual_minimum , greatest_minimum , current , least_maximum , actual_maximum , absolute_maximum }
| Type that defines how to fetch the value. More...
enum | update_type { move , roll }
| A way to update the value. More...
enum | calendar_option_type { is_gregorian , is_dst }
| Information about calendar. More...

## Public Member Functions

virtual abstract_calendar * | clone () const =0
| Make a polymorphic copy of the calendar.
virtual void | set_value (period::marks::period_mark m, int value)=0
virtual void | normalize ()=0
| Recalculate all periods after setting them, should be called after use of set_value() function.
virtual int | get_value (period::marks::period_mark m, value_type v) const =0
| Get specific value for period p according to a value_type v.
virtual void | set_time (const posix_time &p)=0
| Set current time point.
virtual posix_time | get_time () const =0
| Get current time point.
virtual double | get_time_ms () const =0
| Get current time since epoch in milliseconds.
virtual void | set_option (calendar_option_type opt, int v)=0
| Set option for calendar, for future use.
virtual int | get_option (calendar_option_type opt) const =0
| Get option for calendar, currently only check if it is Gregorian calendar.
virtual void | adjust_value (period::marks::period_mark m, update_type u, int difference)=0
virtual int | difference (const abstract_calendar &other, period::marks::period_mark m) const =0
| Calculate the difference between this calendar and other in p units.
virtual void | set_timezone (const std::string &tz)=0
| Set time zone, empty - use system.
virtual std::string | get_timezone () const =0
| Get current time zone, empty - system one.
virtual bool | same (const abstract_calendar *other) const =0
| Check of two calendars have same rules.

## Detailed Description

This class defines generic calendar class, it is used by date_time and calendar objects internally. It is less useful for end users, but it is build for localization backend implementation

## Member Enumeration Documentation

## calendar_option_type

enum boost::locale::abstract_calendar::calendar_option_type

Information about calendar.

Enumerator
is_gregorian | Check if the calendar is Gregorian.
is_dst | Check if the current time is in daylight time savings.

## update_type

enum boost::locale::abstract_calendar::update_type

A way to update the value.

Enumerator
move | Change the value up or down effecting others for example 1990-12-31 + 1 day = 1991-01-01.
roll | Change the value up or down not effecting others for example 1990-12-31 + 1 day = 1990-12-01.

## value_type

enum boost::locale::abstract_calendar::value_type

Type that defines how to fetch the value.

Enumerator
absolute_minimum | Absolute possible minimum for the value, for example for day is 1.
actual_minimum | Actual minimal value for this period.
greatest_minimum | Maximal minimum value that can be for this period.
current | Current value of this period.
least_maximum | The last maximal value for this period, For example for Gregorian calendar day it is 28
actual_maximum | Actual maximum, for it can be 28, 29, 30, 31 for day according to current month.
absolute_maximum | Maximal value, for Gregorian day it would be 31.

## Member Function Documentation

## adjust_value()

virtual void boost::locale::abstract_calendar::adjust_value | ( | period::marks::period_mark | m,
|  | update_type | u,
|  | int | difference
| ) |  |

pure virtual

Adjust period's p value by difference items using a update_type u. Note: not all values are adjustable

## set_value()

virtual void boost::locale::abstract_calendar::set_value | ( | period::marks::period_mark | m,
|  | int | value
| ) |  |

pure virtual

Set specific value for period p, note not all values are settable.

After calling set_value you may want to call normalize() function to make sure all periods are updated, if you set several fields that are part of a single date/time representation you should call set_value several times and then call normalize().

If normalize() is not called after set_value, the behavior is undefined

The documentation for this class was generated from the following file:

- boost/locale/date_time_facet.hpp

- © Copyright 2009-2012 Artyom Beilis, Distributed under the Boost Software License, Version 1.0.