Copyright © 2011 , Kurt Nørmark |
brief-weekday | (brief-weekday second-count) | Given an integer, second-count, return the weekday as a brief string, of the time second-count. |
danish-week-number | (danish-week-number sc) | Given a number sc, return the week number in which sc i located. |
date-ok? | (date-ok? x) | Return whether x is a legal date string (of the form "ddmmyyyy"). |
date-string | (date-string second-count) | Return the date, in the format "ddmmyyyy" of second-count, which represents the time in seconds elapsed since January 1, 1970. |
date-time | (date-time second-count) | Given an integer, second-cound, return a list of two strings: (date time). |
date-time-one-string | (date-time-one-string second-count) | Return a single string that pretty prints the time represented by second count. |
day-of-time | (day-of-time decoded-time-list) | Return the days of a decoded time list. |
days-in-month | (days-in-month month year) | Return the number of days in month and year |
emacs-lisp-time-to-second-count | (emacs-lisp-time-to-second-count time-list) | Given time-list, which is Emacs' representation of Universal time, return a single (large) integer that represents universal time. |
get-month-name | (get-month-name month-number) | Return the month name of month-number. |
hour-of-time | (hour-of-time decoded-time-list) | Return the hour of a decoded time list. |
hours-minutes-decode-string | (hours-minutes-decode-string hour-minute-string) | Decode a string of the form "h:m" or "h.m" to a list of the form (h m). |
hours-minutes-seconds-decode | (hours-minutes-seconds-decode second-count) | Return a list of (hours minutues seconds) given an integer second-count. |
leap-year | (leap-year y) | Return whether y is a leap year. |
minute-of-time | (minute-of-time decoded-time-list) | Return the minutes of a decoded time list. |
month-of-time | (month-of-time decoded-time-list) | Return the month of a decoded time list. |
present-time-interval | (present-time-interval second-count) | Return a string which presens the number of years, months, weeks, days, hours, minutes, and seconds of second-count |
second-count | (second-count y mo d h mi s) | Given date and time in terms of year y, month mo, day d, hour h, minutes mi, and seconds s, caluculate the second count. |
second-count-to-emacs-lisp-time | (second-count-to-emacs-lisp-time second-count) | Given a second count, which represents a point in time as a single large integer, return a list of three 16 bit numbers that corresponds to Emacs's representation. |
second-of-time | (seconds-of-time decoded-time-list) | Return the seconds of a decoded time list. |
seconds-in-a-day | seconds-in-a-day | The number of seconds in a day. |
seconds-in-a-leap-year | seconds-in-a-leap-year | The number of seconds in a leap year. |
seconds-in-a-normal-month | seconds-in-a-normal-month | The number of seconds in a 30-day month. |
seconds-in-a-normal-year | seconds-in-a-normal-year | The number of seconds in a non-leap year. |
seconds-in-a-week | seconds-in-a-week | The number of seconds in a week. |
seconds-in-an-hour | seconds-in-an-hour | The number of seconds in an hour. |
time-decode | (time-decode n) | Given an integer n, which is the number of second since january 1, 1970, return a list: (year month day minutes seconds). |
time-encode | (time-encode y mo d h mi s) | An alias of second-count - encode year, month, day, hour, minutes, and seconds to an integer. |
time-interval | (time-interval second-count) | Return the number of years, months, weeks, days, hours, minutes, and seconds from second-count. |
time-ok? | (time-ok? x) | Return whether x is a legal time string (of the form "hhmm") |
time-string | (time-string second-count) | Return the date, in the format "ddmmyyyy" of second-count, which represents the time in seconds elapsed since January 1, 1970. |
time-zone-info | time-zone-info | Defines the time-zone. |
transform-year-month-day-hour-minutes-strings | (transform-year-month-day-hour-minutes-strings date time) | Transform date and time strings to a second count (a large integer number of seconds elapsed since january 1, 1970). |
weekday | (weekday second-count) | Given an integer, second-count, return the weekday of the time second-count. |
weekday-number | (weekday-number second-count) | return the weekday-number of second-count (an integer). |
when-generated | (when-generated) | Return a string that describes the current time as generation time. |
year-month-day-decode-string | (year-month-day-decode-string year-month-day-string) | Decode a string of the form "y-m-d" to a list of the form (y m d). |
year-of-time | (year-of-time decoded-time-list) | Return the year of a decoded time list. |
1 Time zone and Daylight Saving Time correction. | |||
time-zone-info | |||
Form | time-zone-info | ||
Description | Defines the time-zone. We also use this variable to adjust for daylight saving time. This is, however, kind of a hack. How many hours in front relative to Greenwich, England. The US east coast: 5. California 8. Denmark -1. If the encoded time is already corrected on your system, time-zone-info must be 0. | ||
See also | Scheme source file | time-zone-info | |
2 Basic time functions. | |||
According to the conventions used in LAML, the function current-time is assumed to return the current time, represented as the number of seconds elapsed since January 1, 1970, 00:00:00. In this section there are functions that encode and decode a number of seconds to and from a conventional time representation (in terms of year, month, day, hour, minutes, second). | |||
time-decode | |||
Form | (time-decode n) | ||
Description | Given an integer n, which is the number of second since january 1, 1970, return a list: (year month day minutes seconds). The opposite function is called second-count | ||
Examples | (time-decode 1141249251) => (2006 3 1 21 40 51) | ||
(time-decode 0) => (1970 1 1 0 0 0) | |||
(time-decode tm0) => (2006 3 1 0 0 0) | |||
(time-decode tmn) => (2006 3 1 23 59 59) | |||
(time-decode (emacs-lisp-time-to-second-count (list 17414 9407 300383))) => (2006 3 1 22 48 31) | |||
See also | Scheme source file | time-decode | |
second-count | |||
Form | (second-count y mo d h mi s) | ||
Description | Given date and time in terms of year y, month mo, day d, hour h, minutes mi, and seconds s, caluculate the second count. The second-count function compensates for time zone. The opposite function is called date-time. | ||
Examples | (= (second-count 2006 3 1 0 0 0) tm0) => #t | ||
(= (- (second-count 2006 3 2 0 0 0) 1) tmn) => #t | |||
See also | Scheme source file | second-count | |
time-encode | |||
Form | (time-encode y mo d h mi s) | ||
Description | An alias of second-count - encode year, month, day, hour, minutes, and seconds to an integer. | ||
Examples | (weekday (time-encode 2006 3 1 0 0 0)) => "Wednesday" | ||
See also | Scheme source file | time-encode | |
3 Time selectors. | |||
The selectors in this section work on decoded time lists. It means that the selectors just return a given element from the decoded list representation of time. | |||
year-of-time | |||
Form | (year-of-time decoded-time-list) | ||
Description | Return the year of a decoded time list. An integer greater or equal to 1970. | ||
Examples | (year-of-time (list 2006 3 1 23 59 58)) => 2006 | ||
See also | Scheme source file | year-of-time | |
month-of-time | |||
Form | (month-of-time decoded-time-list) | ||
Description | Return the month of a decoded time list. An integer in the interval 1..12 | ||
Examples | (month-of-time (list 2006 3 1 23 59 58)) => 3 | ||
See also | Scheme source file | month-of-time | |
day-of-time | |||
Form | (day-of-time decoded-time-list) | ||
Description | Return the days of a decoded time list. An integer in the interval 1..31 | ||
Examples | (day-of-time (list 2006 3 1 23 59 58)) => 1 | ||
See also | Scheme source file | day-of-time | |
hour-of-time | |||
Form | (hour-of-time decoded-time-list) | ||
Description | Return the hour of a decoded time list. An integer in the interval 0..23 | ||
Examples | (hour-of-time (list 2006 3 1 23 59 58)) => 23 | ||
See also | Scheme source file | hour-of-time | |
minute-of-time | |||
Form | (minute-of-time decoded-time-list) | ||
Description | Return the minutes of a decoded time list. An integer in the interval 0..59. | ||
Examples | (minute-of-time (list 2006 3 1 23 59 58)) => 59 | ||
See also | Scheme source file | minute-of-time | |
second-of-time | |||
Form | (seconds-of-time decoded-time-list) | ||
Description | Return the seconds of a decoded time list. An integer in the interval 0..59. | ||
Examples | (second-of-time (list 2006 3 1 23 59 58)) => 58 | ||
See also | Scheme source file | second-of-time | |
4 Week days. | |||
The functions in this section deal with week days. Both English and Danish week day names are supported via use of the variable language-preference in laml-fundamental.scm. | |||
weekday | |||
Form | (weekday second-count) | ||
Description | Given an integer, second-count, return the weekday of the time second-count. Returns a string. | ||
Examples | (weekday 1141249251) => "Wednesday" | ||
(weekday tm0) => "Wednesday" | |||
(weekday tmn) => "Wednesday" | |||
(weekday (time-encode 2006 3 1 0 0 0)) => "Wednesday" | |||
See also | Scheme source file | weekday | |
brief-weekday | |||
Form | (brief-weekday second-count) | ||
Description | Given an integer, second-count, return the weekday as a brief string, of the time second-count. Returns a string. | ||
Examples | (brief-weekday 1141249251) => "We" | ||
See also | Scheme source file | brief-weekday | |
5 Week number and week day number. | |||
The functions in this section deal with week numbering and, more simple, week day numbering. | |||
danish-week-number | |||
Form | (danish-week-number sc) | ||
Description | Given a number sc, return the week number in which sc i located. Weeknumbers are treated by means of Danish weeknumber rules | ||
Examples | (danish-week-number 1141249251) => 9 | ||
See also | Scheme source file | danish-week-number | |
weekday-number | |||
Form | (weekday-number second-count) | ||
Description | Return the weekday-number of second-count (an integer). Monday is day number 1 in the week, sunday is day number 7. | ||
Examples | (weekday-number 1141249251) => 3 | ||
See also | Scheme source file | weekday-number | |
6 Time pretty printing. | |||
The functions in this section return pretty printed string representation of time. | |||
date-time | |||
Form | (date-time second-count) | ||
Description | Given an integer, second-cound, return a list of two strings: (date time). This is useful in cases you need to print the data or time as a string. Takes the variable language preference into account. | ||
Examples | (date-time 1141249251) => ("March 1, 2006" "21:40:51") | ||
See also | Scheme source file | date-time | |
date-time-one-string | |||
Form | (date-time-one-string second-count) | ||
Description | Return a single string that pretty prints the time represented by second count. Takes the variable language preference into account. | ||
Examples | (date-time-one-string 1141249251) => "March 1, 2006, 21:40:51" | ||
See also | Scheme source file | date-time-one-string | |
when-generated | |||
Form | (when-generated) | ||
Description | Return a string that describes the current time as generation time. Takes the variable language-preference into account. | ||
See also | Scheme source file | when-generated | |
similar function in xhtml1.0-convenience.scm | when-modified | ||
7 Time interval functions. | |||
time-interval | |||
Form | (time-interval second-count) | ||
Description | Return the number of years, months, weeks, days, hours, minutes, and seconds from second-count. In this function, months are uniformly counted as 30 days, and a year is counted as 365 days. Due to this, a year is not exactly counted as 12 months, and therefore slightly unexpected results may occur. A list of seven integers is returned. | ||
Examples | (time-interval 3600) => (0 0 0 0 1 0 0) | ||
(time-interval (* 24 3600)) => (0 0 0 1 0 0 0) | |||
(time-interval 1) => (0 0 0 0 0 0 1) | |||
(time-interval (* 30 (* 24 3600))) => (0 1 0 0 0 0 0) | |||
(time-interval (* 7 (* 24 3600))) => (0 0 1 0 0 0 0) | |||
(time-interval (* 365 (* 24 3600))) => (1 0 0 0 0 0 0) | |||
(time-interval (- (* 365 (* 24 3600)) 1)) => (0 12 0 4 23 59 59) | |||
See also | Scheme source file | time-interval | |
present-time-interval | |||
Form | (present-time-interval second-count) | ||
Description | Return a string which presens the number of years, months, weeks, days, hours, minutes, and seconds of second-count | ||
Examples | (present-time-interval (* 365 (* 24 3600))) => "1 years " | ||
(present-time-interval (- (* 365 (* 24 3600)) 1)) => "12 months 4 days 23 hours 59 minutes 59 seconds " | |||
(present-time-interval (* 30 (* 24 3600))) => "1 months " | |||
(present-time-interval (* 7 (* 24 3600))) => "1 weeks " | |||
(present-time-interval (* 24 3600)) => "1 days " | |||
See also | Scheme source file | present-time-interval | |
8 Conventional string representation of time. | |||
This section contains a number of functions that deal with dates and time as strings in the formats such as "ddmmyyyy" and "hhmm". The seconds are not part of the string representation. | |||
transform-year-month-day-hour-minutes-strings | |||
Form | (transform-year-month-day-hour-minutes-strings date time) | ||
Description | Transform date and time strings to a second count (a large integer number of seconds elapsed since january 1, 1970). The date parameter is a string of the form "ddmmyyyy" (eight ciffers). The time parameter is of the form "hhmm" (four ciffers). Assumes as a prefix that date and time represent a legal point in time. Use date-ok? and time-ok? to assure this. Return #f if date is blank (or if both date and time is blank). | ||
Examples | (transform-year-month-day-hour-minutes-strings "01032006" "0000") => 1141171200 | ||
(transform-year-month-day-hour-minutes-strings "01032006" "2359") => 1141257540 | |||
See also | Scheme source file | transform-year-month-day-hour-minutes-strings | |
date-string | |||
Form | (date-string second-count) | ||
Description | Return the date, in the format "ddmmyyyy" of second-count, which represents the time in seconds elapsed since January 1, 1970. | ||
Examples | (date-string 1141257540) => "01032006" | ||
See also | Scheme source file | date-string | |
time-string | |||
Form | (time-string second-count) | ||
Description | Return the date, in the format "ddmmyyyy" of second-count, which represents the time in seconds elapsed since January 1, 1970. | ||
Examples | (time-string 1141257540) => "2359" | ||
See also | Scheme source file | time-string | |
date-ok? | |||
Form | (date-ok? x) | ||
Description | Return whether x is a legal date string (of the form "ddmmyyyy"). Exact determination, including february and leap years. Uses days-in-month from the time library. | ||
Examples | (date-ok? "01032006") => #t | ||
(date-ok? "28022006") => #t | |||
(date-ok? "29022006") => #f | |||
(date-ok? "01012006") => #t | |||
(date-ok? "31012006") => #t | |||
(date-ok? "32012006") => #f | |||
(date-ok? "31042006") => #f | |||
(date-ok? "30042006") => #t | |||
(date-ok? "31132006") => #f | |||
(date-ok? "31122006") => #t | |||
See also | Scheme source file | date-ok? | |
time-ok? | |||
Form | (time-ok? x) | ||
Description | Return whether x is a legal time string (of the form "hhmm") | ||
Examples | (time-ok? "00") => #f | ||
(time-ok? "0000") => #t | |||
(time-ok? "0160") => #f | |||
(time-ok? "0159") => #t | |||
(time-ok? "2359") => #t | |||
(time-ok? "2459") => #f | |||
(time-ok? "2360") => #f | |||
See also | Scheme source file | time-ok? | |
hours-minutes-decode-string | |||
Form | (hours-minutes-decode-string hour-minute-string) | ||
Description | Decode a string of the form "h:m" or "h.m" to a list of the form (h m). Does also accept the juxtaposition "hm" in which case m is taken as the last two ciffers. Given for instance "12:35", "12.35" or "1235" return (12 35). | ||
Examples | (hours-minutes-decode-string "10.65") => (10 65) | ||
(hours-minutes-decode-string "2231") => (22 31) | |||
(hours-minutes-decode-string "22.31") => (22 31) | |||
See also | Scheme source file | hours-minutes-decode-string | |
year-month-day-decode-string | |||
Form | (year-month-day-decode-string year-month-day-string) | ||
Description | Decode a string of the form "y-m-d" to a list of the form (y m d). A proper list of three integers. Given for instance "2005-9-12", return the list (2005 9 12) representing September 12, 2005. | ||
Examples | (year-month-day-decode-string "2006-3-1") => (2006 3 1) | ||
See also | Scheme source file | year-month-day-decode-string | |
9 Underlying time related constants and functions. | |||
In this section there is a number of auxiliary time functions. In addition, we document a number of time related constants. | |||
seconds-in-a-normal-year | |||
Form | seconds-in-a-normal-year | ||
Description | The number of seconds in a non-leap year. | ||
See also | Scheme source file | seconds-in-a-normal-year | |
seconds-in-a-leap-year | |||
Form | seconds-in-a-leap-year | ||
Description | The number of seconds in a leap year. | ||
See also | Scheme source file | seconds-in-a-leap-year | |
seconds-in-a-normal-month | |||
Form | seconds-in-a-normal-month | ||
Description | The number of seconds in a 30-day month. | ||
See also | Scheme source file | seconds-in-a-normal-month | |
seconds-in-a-week | |||
Form | seconds-in-a-week | ||
Description | The number of seconds in a week. | ||
See also | Scheme source file | seconds-in-a-week | |
seconds-in-a-day | |||
Form | seconds-in-a-day | ||
Description | The number of seconds in a day. | ||
See also | Scheme source file | seconds-in-a-day | |
seconds-in-an-hour | |||
Form | seconds-in-an-hour | ||
Description | The number of seconds in an hour. | ||
See also | Scheme source file | seconds-in-an-hour | |
get-month-name | |||
Form | (get-month-name month-number) | ||
Description | Return the month name of month-number. January is number one. The result depends on the free variable language-preference. | ||
Examples | (get-month-name 1) => "January" | ||
(get-month-name 12) => "December" | |||
See also | Scheme source file | get-month-name | |
applied variable | language-preference | ||
leap-year | |||
Form | (leap-year y) | ||
Description | Return whether y is a leap year. | ||
Examples | (leap-year 2006) => #f | ||
(leap-year 2000) => #t | |||
(leap-year 1900) => #f | |||
(leap-year 2004) => #t | |||
(leap-year 2003) => #f | |||
See also | Scheme source file | leap-year | |
days-in-month | |||
Form | (days-in-month month year) | ||
Description | Return the number of days in month and year | ||
Examples | (days-in-month 1 2006) => 31 | ||
(days-in-month 2 2006) => 28 | |||
(days-in-month 2 2004) => 29 | |||
(days-in-month 5 2004) => 31 | |||
(days-in-month 12 2004) => 31 | |||
See also | Scheme source file | days-in-month | |
hours-minutes-seconds-decode | |||
Form | (hours-minutes-seconds-decode second-count) | ||
Description | Return a list of (hours minutues seconds) given an integer second-count. | ||
See also | Scheme source file | hours-minutes-seconds-decode | |
10 Other time related functions. | |||
emacs-lisp-time-to-second-count | |||
Form | (emacs-lisp-time-to-second-count time-list) | ||
Description | Given time-list, which is Emacs' representation of Universal time, return a single (large) integer that represents universal time. | ||
Parameters | time-list | A list of three 16 bit integers (high low microsec) which represents a point in time after 1969. | |
Returns | high * 2**16 + low | ||
Examples | (emacs-lisp-time-to-second-count (list 17414 9407 300383)) => 1141253311 | ||
(time-decode (emacs-lisp-time-to-second-count (list 17414 9407 300383))) => (2006 3 1 22 48 31) | |||
(second-count-to-emacs-lisp-time (emacs-lisp-time-to-second-count (list 17414 9407))) => (17414 9407 0) | |||
(second-count-to-emacs-lisp-time (emacs-lisp-time-to-second-count (list 17414 9407 300383))) => (17414 9407 0) | |||
(emacs-lisp-time-to-second-count (list 0 0)) => 0 | |||
See also | Scheme source file | emacs-lisp-time-to-second-count | |
second-count-to-emacs-lisp-time | |||
Form | (second-count-to-emacs-lisp-time second-count) | ||
Description | Given a second count, which represents a point in time as a single large integer, return a list of three 16 bit numbers that corresponds to Emacs's representation. | ||
Parameters | second-count | An integer - the number of seconds elapsed since Jan 1, 1970. | |
Returns | A list of three 16 bit integers (high low 0), for which high * 2**16 + low = second-count. | ||
Examples | (second-count-to-emacs-lisp-time (emacs-lisp-time-to-second-count (list 17414 9407))) => (17414 9407 0) | ||
(second-count-to-emacs-lisp-time (emacs-lisp-time-to-second-count (list 17414 9407 300383))) => (17414 9407 0) | |||
See also | Scheme source file | second-count-to-emacs-lisp-time | |