Moduletext-icu-0.8.0.5Haskell98
Data.Text.ICU.Calendar
Calendar functions implemented as bindings to the International Components for Unicode (ICU) libraries.
- 5 types
- 77 values
- Packagetext-icu-0.8.0.5
- Exports82
- LanguageHaskell98
- LicenceBSD-3-Clause
- SourceCalendar.hsc
Data
5 declarationsInstances3Eq, Read, Show
Eq CalendarTypeDefined in text-icu-0.8.0.5 · Data.Text.ICU.CalendarRead CalendarTypeDefined in text-icu-0.8.0.5 · Data.Text.ICU.CalendarShow CalendarTypeDefined in text-icu-0.8.0.5 · Data.Text.ICU.Calendar
Instances3Eq, Read, Show
Eq SystemTimeZoneTypeDefined in text-icu-0.8.0.5 · Data.Text.ICU.CalendarRead SystemTimeZoneTypeDefined in text-icu-0.8.0.5 · Data.Text.ICU.CalendarShow SystemTimeZoneTypeDefined in text-icu-0.8.0.5 · Data.Text.ICU.Calendar
All the fields that comprise a Calendar.
Constructors
EraField indicating the era, e.g., AD or BC in the Gregorian (Julian) calendar. This is a calendar-specific value.
YearField indicating the year. This is a calendar-specific value.
MonthField indicating the month. This is a calendar-specific value. The first month of the year is JANUARY; the last depends on the number of months in a year. Note: Calendar month is 0-based.
WeekOfYearField indicating the week number within the current year. The first week of the year, as defined by UCAL_FIRST_DAY_OF_WEEK and UCAL_MINIMAL_DAYS_IN_FIRST_WEEK attributes, has value 1. Subclasses define the value of UCAL_WEEK_OF_YEAR for days before the first week of the year.
WeekOfMonthField indicating the week number within the current month. The first week of the month, as defined by UCAL_FIRST_DAY_OF_WEEK and UCAL_MINIMAL_DAYS_IN_FIRST_WEEK attributes, has value 1. Subclasses define the value of WEEK_OF_MONTH for days before the first week of the month.
DayOfMonthField indicating the day of the month. This is a synonym for DAY_OF_MONTH. The first day of the month has value 1.
DayOfYearField indicating the day number within the current year. The first day of the year has value 1.
DayOfWeekField indicating the day of the week. This field takes values SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, and SATURDAY. Note: Calendar day-of-week is 1-based. Clients who create locale resources for the field of first-day-of-week should be aware of this. For instance, in US locale, first-day-of-week is set to 1, i.e., UCAL_SUNDAY.
DayOfWeekInMonthField indicating the ordinal number of the day of the week within the current month. Together with the DAY_OF_WEEK field, this uniquely specifies a day within a month. Unlike WEEK_OF_MONTH and WEEK_OF_YEAR, this field's value does not depend on getFirstDayOfWeek() or getMinimalDaysInFirstWeek(). DAY_OF_MONTH 1 through 7 always correspond to DAY_OF_WEEK_IN_MONTH 1; 8 through 15 correspond to DAY_OF_WEEK_IN_MONTH 2, and so on. DAY_OF_WEEK_IN_MONTH 0 indicates the week before DAY_OF_WEEK_IN_MONTH 1. Negative values count back from the end of the month, so the last Sunday of a month is specified as DAY_OF_WEEK = SUNDAY, DAY_OF_WEEK_IN_MONTH = -1. Because negative values count backward they will usually be aligned differently within the month than positive values. For example, if a month has 31 days, DAY_OF_WEEK_IN_MONTH -1 will overlap DAY_OF_WEEK_IN_MONTH 5 and the end of 4.
AmPmField indicating whether the HOUR is before or after noon. E.g., at 10:04:15.250 PM the AM_PM is PM.
HourField indicating the hour of the morning or afternoon. HOUR is used for the 12-hour clock. E.g., at 10:04:15.250 PM the HOUR is 10.
HourOfDayField indicating the hour of the day. HOUR_OF_DAY is used for the 24-hour clock. E.g., at 10:04:15.250 PM the HOUR_OF_DAY is 22.
MinuteField indicating the minute within the hour. E.g., at 10:04:15.250 PM the UCAL_MINUTE is 4.
SecondField indicating the second within the minute. E.g., at 10:04:15.250 PM the UCAL_SECOND is 15.
MillisecondField indicating the millisecond within the second. E.g., at 10:04:15.250 PM the UCAL_MILLISECOND is 250.
ZoneOffsetField indicating the raw offset from GMT in milliseconds.
DstOffsetField indicating the daylight savings offset in milliseconds.
YearWoYField indicating the extended year corresponding to the UCAL_WEEK_OF_YEAR field. This may be one greater or less than the value of UCAL_EXTENDED_YEAR.
DoWLocalField indicating the localized day of week. This will be a value from 1 to 7 inclusive, with 1 being the localized first day of the week.
ExtendedYearYear of this calendar system, encompassing all supra-year fields. For example, in Gregorian/Julian calendars, positive Extended Year values indicate years AD, 1 BC = 0 extended, 2 BC = -1 extended, and so on.
JulianDayField indicating the modified Julian day number. This is different from the conventional Julian day number in two regards. First, it demarcates days at local zone midnight, rather than noon GMT. Second, it is a local number; that is, it depends on the local time zone. It can be thought of as a single number that encompasses all the date-related fields.
MillisecondsInDayRanges from 0 to 23:59:59.999 (regardless of DST). This field behaves exactly like a composite of all time-related fields, not including the zone fields. As such, it also reflects discontinuities of those fields on DST transition days. On a day of DST onset, it will jump forward. On a day of DST cessation, it will jump backward. This reflects the fact that it must be combined with the DST_OFFSET field to obtain a unique local time value.
IsLeapMonthWhether or not the current month is a leap month (0 or 1). See the Chinese calendar for an example of this.
Instances3Eq, Read, Show
Eq CalendarFieldDefined in text-icu-0.8.0.5 · Data.Text.ICU.CalendarRead CalendarFieldDefined in text-icu-0.8.0.5 · Data.Text.ICU.CalendarShow CalendarFieldDefined in text-icu-0.8.0.5 · Data.Text.ICU.Calendar
High-level interface
0 declarationsOperations on calendars
roll :: Calendar-> [(CalendarField, Int)]The field and the signed amount to add to this field. If the amount causes the value to exceed to maximum or minimum values for that field, the field is pinned to a permissible value.
-> Calendar
Add a specified signed amount to a particular field in a Calendar.
See rollField for further details.
import qualified Data.Text as Tc1 <- calendar (T.pack "CET") (Locale "de_DE") TraditionalCalendarTypeshow c12021-10-12 17:53:26let c2 = roll c1 [(Hour, 2)]show c22021-10-12 19:53:26let c3 = roll c1 [(Hour, 12)]show c32021-10-12 17:53:26let c4 = add c1 [(Hour, 12)]show c42021-10-13 5:53:26
Set the value of one field of a calendar to a certain value. All fields are represented as 32-bit integers.
Set the value of a list of fields of a calendar to certain values. All fields are represented as 32-bit integers.
Get the value of a specific field in the calendar.
Calendar field getters
Return the era of the calendar. The values are calendar specific and are usually 0 (some ancient era) and 1 (current era).
import qualified Data.Text as Tc1 <- calendar (T.pack "CET") (Locale "de_DE") TraditionalCalendarTypeera c11
Return the year of the calendar. The values are calendar specific.
import qualified Data.Text as Tc1 <- calendar (T.pack "CET") (Locale "de_DE") TraditionalCalendarTypeyear c12021
Return the month of the calendar. The values are calendar specific and 0-based.
import qualified Data.Text as Tc1 <- calendar (T.pack "CET") (Locale "de_DE") TraditionalCalendarTypemonth c19day c12021-10-12
Convert the day part of the calendar to a Day.
import qualified Data.Text as Tc1 <- calendar (T.pack "CET") (Locale "de_DE") TraditionalCalendarTypeshow c12021-10-12 18:00:50day c12021-10-12
Convert the day and time part of the calendar to a UTCTime.
import qualified Data.Text as Tc1 <- calendar (T.pack "CET") (Locale "de_DE") TraditionalCalendarTypeshow c12021-10-12 18:00:50utcTime c12021-10-12 16:00:50.544999999998 UTC
Calendar field setters
Set the day part of the calendar from a Day.
Lenses
Time zone functions
List of all time zones.
Low-level interface
10 declarationsOpen a Calendar.
A Calendar may be used to convert a millisecond value to a year, month, and day.
Note: When unknown TimeZone ID is specified or if the TimeZone ID specified is "Etc/Unknown", the Calendar returned by the function is initialized with GMT zone with TimeZone ID UCAL_UNKNOWN_ZONE_ID ("EtcUnknown") without any errorswarnings. If you want to check if a TimeZone ID is valid prior to this function, use ucal_getCanonicalTimeZoneID.
import qualified Data.Text as Tc <- calendar (T.pack "CET") (Locale "de_DE") TraditionalCalendarTypeshow c2021-10-12 17:37:43
Create an enumeration over all time zones.
Get the value of a specific calendar field.
import qualified Data.Text as Tc <- calendar (T.pack "CET") (Locale "de_DE") TraditionalCalendarTypegetField c Year2021
Add a specified signed amount to a particular field in a Calendar.
This will not modify more significant fields in the calendar. Rolling by a positive value always means moving forward in time (unless the limit of the field is reached, in which case it may pin or wrap), so for Gregorian calendar, starting with 100 BC and rolling the year by +1 results in 99 BC. When eras have a definite beginning and end (as in the Chinese calendar, or as in most eras in the Japanese calendar) then rolling the year past either limit of the era will cause the year to wrap around. When eras only have a limit at one end, then attempting to roll the year past that limit will result in pinning the year at that limit. Note that for most calendars in which era 0 years move forward in time (such as Buddhist, Hebrew, or Islamic), it is possible for add or roll to result in negative years for era 0 (that is the only way to represent years before the calendar epoch).
Add a specified signed amount to a particular field in a Calendar.
This can modify more significant fields in the calendar. Adding a positive value always means moving forward in time, so for the Gregorian calendar, starting with 100 BC and adding +1 to year results in 99 BC (even though this actually reduces the numeric value of the field itself).