diff options
Diffstat (limited to 'lib/stdlib/doc/src/calendar.xml')
-rw-r--r-- | lib/stdlib/doc/src/calendar.xml | 377 |
1 files changed, 377 insertions, 0 deletions
diff --git a/lib/stdlib/doc/src/calendar.xml b/lib/stdlib/doc/src/calendar.xml new file mode 100644 index 0000000000..36f0c03162 --- /dev/null +++ b/lib/stdlib/doc/src/calendar.xml @@ -0,0 +1,377 @@ +<?xml version="1.0" encoding="latin1" ?> +<!DOCTYPE erlref SYSTEM "erlref.dtd"> + +<erlref> + <header> + <copyright> + <year>1996</year><year>2009</year> + <holder>Ericsson AB. All Rights Reserved.</holder> + </copyright> + <legalnotice> + The contents of this file are subject to the Erlang Public License, + Version 1.1, (the "License"); you may not use this file except in + compliance with the License. You should have received a copy of the + Erlang Public License along with this software. If not, it can be + retrieved online at http://www.erlang.org/. + + Software distributed under the License is distributed on an "AS IS" + basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See + the License for the specific language governing rights and limitations + under the License. + + </legalnotice> + + <title>calendar</title> + <prepared>Peter Högfeldt</prepared> + <docno></docno> + <date>1996-11-05</date> + <rev>B</rev> + </header> + <module>calendar</module> + <modulesummary>Local and universal time, day-of-the-week, date and time conversions</modulesummary> + <description> + <p>This module provides computation of local and universal time, + day-of-the-week, and several time conversion functions.</p> + <p>Time is local when it is adjusted in accordance with the current + time zone and daylight saving. Time is universal when it reflects + the time at longitude zero, without any adjustment for daylight + saving. Universal Coordinated Time (UTC) time is also called + Greenwich Mean Time (GMT).</p> + <p>The time functions <c>local_time/0</c> and + <c>universal_time/0</c> provided in this module both return date + and time. The reason for this is that separate functions for date + and time may result in a date/time combination which is displaced + by 24 hours. This happens if one of the functions is called + before midnight, and the other after midnight. This problem also + applies to the Erlang BIFs <c>date/0</c> and <c>time/0</c>, and + their use is strongly discouraged if a reliable date/time stamp + is required.</p> + <p>All dates conform to the Gregorian calendar. This calendar was + introduced by Pope Gregory XIII in 1582 and was used in all + Catholic countries from this year. Protestant parts of Germany + and the Netherlands adopted it in 1698, England followed in 1752, + and Russia in 1918 (the October revolution of 1917 took place in + November according to the Gregorian calendar).</p> + <p>The Gregorian calendar in this module is extended back to year 0. + For a given date, the <em>gregorian days</em> is the number of + days up to and including the date specified. Similarly, + the <em>gregorian seconds</em> for a given date and time, is + the the number of seconds up to and including the specified date + and time.</p> + <p>For computing differences between epochs in time, use + the functions counting gregorian days or seconds. If epochs are + given as local time, they must be converted to universal time, in + order to get the correct value of the elapsed time between epochs. + Use of the function <c>time_difference/2</c> is discouraged.</p> + </description> + + <section> + <title>DATA TYPES</title> + <code type="none"> +date() = {Year, Month, Day} + Year = int() + Month = 1..12 + Day = 1..31 +Year cannot be abbreviated. Example: 93 denotes year 93, not 1993. +Valid range depends on the underlying OS. +The date tuple must denote a valid date. + +time() = {Hour, Minute, Second} + Hour = 0..23 + Minute = Second = 0..59</code> + </section> + <funcs> + <func> + <name>date_to_gregorian_days(Date) -> Days</name> + <name>date_to_gregorian_days(Year, Month, Day) -> Days</name> + <fsummary>Compute the number of days from year 0 up to the given date</fsummary> + <type> + <v>Date = date()</v> + <v>Days = int()</v> + </type> + <desc> + <p>This function computes the number of gregorian days starting + with year 0 and ending at the given date.</p> + </desc> + </func> + <func> + <name>datetime_to_gregorian_seconds({Date, Time}) -> Seconds</name> + <fsummary>Compute the number of seconds from year 0 up to the given date and time</fsummary> + <type> + <v>Date = date()</v> + <v>Time = time()</v> + <v>Seconds = int()</v> + </type> + <desc> + <p>This function computes the number of gregorian seconds + starting with year 0 and ending at the given date and time.</p> + </desc> + </func> + <func> + <name>day_of_the_week(Date) -> DayNumber</name> + <name>day_of_the_week(Year, Month, Day) -> DayNumber</name> + <fsummary>Compute the day of the week</fsummary> + <type> + <v>Date = date()</v> + <v>DayNumber = 1..7</v> + </type> + <desc> + <p>This function computes the day of the week given <c>Year</c>, + <c>Month</c> and <c>Day</c>. The return value denotes the day + of the week as <c>1</c>: Monday, <c>2</c>: Tuesday, and so on.</p> + </desc> + </func> + <func> + <name>gregorian_days_to_date(Days) -> Date</name> + <fsummary>Compute the date given the number of gregorian days</fsummary> + <type> + <v>Days = int()</v> + <v>Date = date()</v> + </type> + <desc> + <p>This function computes the date given the number of + gregorian days.</p> + </desc> + </func> + <func> + <name>gregorian_seconds_to_datetime(Seconds) -> {Date, Time}</name> + <fsummary>Compute the date given the number of gregorian days</fsummary> + <type> + <v>Seconds = int()</v> + <v>Date = date()</v> + <v>Time = time()</v> + </type> + <desc> + <p>This function computes the date and time from the given + number of gregorian seconds.</p> + </desc> + </func> + <func> + <name>is_leap_year(Year) -> bool()</name> + <fsummary>Check if a year is a leap year</fsummary> + <desc> + <p>This function checks if a year is a leap year.</p> + </desc> + </func> + <func> + <name>last_day_of_the_month(Year, Month) -> int()</name> + <fsummary>Compute the number of days in a month</fsummary> + <desc> + <p>This function computes the number of days in a month.</p> + </desc> + </func> + <func> + <name>local_time() -> {Date, Time}</name> + <fsummary>Compute local time</fsummary> + <type> + <v>Date = date()</v> + <v>Time = time()</v> + </type> + <desc> + <p>This function returns the local time reported by + the underlying operating system.</p> + </desc> + </func> + <func> + <name>local_time_to_universal_time({Date1, Time1}) -> {Date2, Time2}</name> + <fsummary>Convert from local time to universal time (deprecated)</fsummary> + <desc> + <p>This function converts from local time to Universal + Coordinated Time (UTC). <c>Date1</c> must refer to a local + date after Jan 1, 1970.</p> + <warning> + <p>This function is deprecated. Use + <c>local_time_to_universal_time_dst/1</c> instead, as it + gives a more correct and complete result. Especially for + the period that does not exist since it gets skipped during + the switch <em>to</em> daylight saving time, this function + still returns a result.</p> + </warning> + </desc> + </func> + <func> + <name>local_time_to_universal_time_dst({Date1, Time1}) -> [{Date, Time}]</name> + <fsummary>Convert from local time to universal time(s)</fsummary> + <type> + <v>Date1 = Date = date()</v> + <v>Time1 = Time = time()</v> + </type> + <desc> + <p>This function converts from local time to Universal + Coordinated Time (UTC). <c>Date1</c> must refer to a local + date after Jan 1, 1970.</p> + <p>The return value is a list of 0, 1 or 2 possible UTC times:</p> + <taglist> + <tag><c>[]</c></tag> + <item> + <p>For a local <c>{Date1, Time1}</c> during the period that + is skipped when switching <em>to</em> daylight saving + time, there is no corresponding UTC since the local time + is illegal - it has never happened.</p> + </item> + <tag><c>[DstDateTimeUTC, DateTimeUTC]</c></tag> + <item> + <p>For a local <c>{Date1, Time1}</c> during the period that + is repeated when switching <em>from</em> daylight saving + time, there are two corresponding UTCs. One for the first + instance of the period when daylight saving time is still + active, and one for the second instance.</p> + </item> + <tag><c>[DateTimeUTC]</c></tag> + <item> + <p>For all other local times there is only one + corresponding UTC.</p> + </item> + </taglist> + </desc> + </func> + <func> + <name>now_to_local_time(Now) -> {Date, Time}</name> + <fsummary>Convert now to local date and time</fsummary> + <type> + <v>Now -- see erlang:now/0</v> + <v>Date = date()</v> + <v>Time = time()</v> + </type> + <desc> + <p>This function returns local date and time converted from + the return value from <c>erlang:now()</c>.</p> + </desc> + </func> + <func> + <name>now_to_universal_time(Now) -> {Date, Time}</name> + <name>now_to_datetime(Now) -> {Date, Time}</name> + <fsummary>Convert now to date and time</fsummary> + <type> + <v>Now -- see erlang:now/0</v> + <v>Date = date()</v> + <v>Time = time()</v> + </type> + <desc> + <p>This function returns Universal Coordinated Time (UTC) + converted from the return value from <c>erlang:now()</c>.</p> + </desc> + </func> + <func> + <name>seconds_to_daystime(Seconds) -> {Days, Time}</name> + <fsummary>Compute days and time from seconds</fsummary> + <type> + <v>Seconds = Days = int()</v> + <v>Time = time()</v> + </type> + <desc> + <p>This function transforms a given number of seconds into days, + hours, minutes, and seconds. The <c>Time</c> part is always + non-negative, but <c>Days</c> is negative if the argument + <c>Seconds</c> is.</p> + </desc> + </func> + <func> + <name>seconds_to_time(Seconds) -> Time</name> + <fsummary>Compute time from seconds</fsummary> + <type> + <v>Seconds = int() < 86400</v> + <v>Time = time()</v> + </type> + <desc> + <p>This function computes the time from the given number of + seconds. <c>Seconds</c> must be less than the number of + seconds per day (86400).</p> + </desc> + </func> + <func> + <name>time_difference(T1, T2) -> {Days, Time}</name> + <fsummary>Compute the difference between two times (deprecated)</fsummary> + <desc> + <p>This function returns the difference between two <c>{Date, Time}</c> tuples. <c>T2</c> should refer to an epoch later + than <c>T1</c>.</p> + <warning> + <p>This function is obsolete. Use the conversion functions for + gregorian days and seconds instead.</p> + </warning> + </desc> + </func> + <func> + <name>time_to_seconds(Time) -> Seconds</name> + <fsummary>Compute the number of seconds since midnight up to the given time</fsummary> + <type> + <v>Time = time()</v> + <v>Seconds = int()</v> + </type> + <desc> + <p>This function computes the number of seconds since midnight + up to the specified time.</p> + </desc> + </func> + <func> + <name>universal_time() -> {Date, Time}</name> + <fsummary>Compute universal time</fsummary> + <type> + <v>Date = date()</v> + <v>Time = time()</v> + </type> + <desc> + <p>This function returns the Universal Coordinated Time (UTC) + reported by the underlying operating system. Local time is + returned if universal time is not available.</p> + </desc> + </func> + <func> + <name>universal_time_to_local_time({Date1, Time1}) -> {Date2, Time2}</name> + <fsummary>Convert from universal time to local time</fsummary> + <type> + <v>Date1 = Date2 = date()</v> + <v>Time1 = Time2 = time()</v> + </type> + <desc> + <p>This function converts from Universal Coordinated Time (UTC) + to local time. <c>Date1</c> must refer to a date after Jan 1, + 1970.</p> + </desc> + </func> + <func> + <name>valid_date(Date) -> bool()</name> + <name>valid_date(Year, Month, Day) -> bool()</name> + <fsummary>Check if a date is valid</fsummary> + <type> + <v>Date = date()</v> + </type> + <desc> + <p>This function checks if a date is a valid.</p> + </desc> + </func> + </funcs> + + <section> + <title>Leap Years</title> + <p>The notion that every fourth year is a leap year is not + completely true. By the Gregorian rule, a year Y is a leap year if + either of the following rules is valid:</p> + <list type="bulleted"> + <item> + <p>Y is divisible by 4, but not by 100; or</p> + </item> + <item> + <p>Y is divisible by 400.</p> + </item> + </list> + <p>Accordingly, 1996 is a leap year, 1900 is not, but 2000 is.</p> + </section> + + <section> + <title>Date and Time Source</title> + <p>Local time is obtained from the Erlang BIF <c>localtime/0</c>. + Universal time is computed from the BIF <c>universaltime/0</c>.</p> + <p>The following facts apply:</p> + <list type="bulleted"> + <item>there are 86400 seconds in a day</item> + <item>there are 365 days in an ordinary year</item> + <item>there are 366 days in a leap year</item> + <item>there are 1461 days in a 4 year period</item> + <item>there are 36524 days in a 100 year period</item> + <item>there are 146097 days in a 400 year period</item> + <item>there are 719528 days between Jan 1, 0 and Jan 1, 1970.</item> + </list> + </section> +</erlref> + |