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