Synopsis
Says a date and/or time to the caller.
Syntax
SayUnixTime(unixtime,timezone,format)
Description
Uses some of the sound files stored in /var/lib/asterisk/sounds to construct a phrase saying the specified date and/or time in the specified format.
unixtime is the date/time to say, represented as a standard unix timestamp (number of seconds since 1 Jan 1970). If this parameter is omitted, the default value is the current date/time.
timezone specifies the timezone that the unixtime is in. If this parameter is omitted, the default value is the time zone of the computer. It sould be specified as a unix timezone (see your /usr/share/zoneinfo directory for a list of timezones known to your computer), for example, “Pacific/Samoa”.
format is a string specifying in what way to say the date/time. It uses a format based on the strftime(3) unix system call, if you’re familiar with that. If omitted, the default value is:
ABdY \’digits/at\’ IMp
This would result in a phrase like this: “Monday January twenty first 2003 at seven fifty two p m“. Note that the ‘digits/at‘ part refers to the sound /var/lib/asterisk/sounds/digits/at.gsm, i.e. it is a relative pathname to a sound file.
SayUnixTime is Multi-Language-compliant. It will say the date/time in the language set by the Asterisk channels or overriden with the SetLanguage command, if the localized sound files for that language are installed.
Format Codes
\’filename\’ (1.4) filename (1.6+) | filename of a sound file | In Asterisk version 1.4 backslash and single ticks (\’) around the filename are required. |
A or a | Day of week | Saturday, Sunday, …, Friday |
B or b or h | Month name | January, February, …, December |
d or e | numeric day of month | first, second, …, thirty-first |
Y | Year | |
I(capital eye) or l(lower ell) | Hour, 12 hour clock | one, two, three, …, twelve |
H | Hour, 24 hour clock | ?, oh one, oh two, …, oh nine, ten, eleven, …, twenty-three |
k | Hour, 24 hour clock | ?, one, two, three, …, twenty three |
M | Minute | ?, oh one, oh two, … fifty-nine |
m (in CVS HEAD) | Month number | Say number of month (first – twelfth) |
P or p | AM or PM | ay em / pee em |
Q | Date | “today”, “yesterday” or ABdY |
q | Date | “” (for today), “yesterday”, weekday, or ABdY |
R | 24 Hour, Minute | 24 hour time, including minute (HM) |
S | seconds | |
T | 24 Hour, Minute, Second | 24 hour clock with minute and second (HMS) |
How does SayUnixTime render years? Is 2000 said as “two thousand” or “twenty hundred”? 2001 = “twenty oh one” or “two thousand and one”? 1975 = “nineteen seventy five” or “one thousand nine hundred and seventy five”?
- answer: 2005 is said as “two thousand five”.
For times between midnight at 12:59 am, does %H say “zero zero” or “oh oh” or “zero” or “oh” or …? Does %k say “zero” or “oh”?
- answer: %k and %H both say “oh”. %R seems to be the equivalent of %H%M.
Does %M say “oh clock” or “zero” or “oh” or nothing or what, to mean zero minutes? Are 1 to 9 minutes said as “oh one” to “oh nine”? And so on, for the other format characters here.
- answer: %M says “oh clock”, “oh one” and so on.
Example
SayUnixTime(,EST5EDT,ABdY \’digits/at\’ IMp)
Says the current time based on the US Eastern Standard Time or Eastern Daylight Time.
See also
- Asterisk variables EPOCH and function STRFTIME
- Festival Speech Synthesizer
- Asterisk Sound Files
- Setting up a Multi-Language Asterisk Installation
- DateTime: Obsolete version of this command
Asterisk | Applications | Functions | Variables | Expressions | Asterisk FAQ