From Lavish Software Wiki
Jump to navigation Jump to search
Object Type Vitals
Defined By LavishScript
Inherits none
Reduces To Same as Time24
Variable Object Type time
Uses Sub-Types no
C/C++ Type struct tm *


The time type describes a date and time of day. Many other details are available, such as the month, day of week, and so on. This type also provides basic time calculation functionality


  • intptr Hour: Hour of the day (0-23)
  • intptr Minute: Minute of the hour (0-59)
  • intptr Second: Second of the minute (0-59)
  • int DayOfWeek: Day of the week (1-7)
  • intptr DayOfWeekPtr: Day of the week (0-6) - Mainly useful for *setting*
  • intptr Day: Day of the month (1-31 depending on the month)
  • int Month: Month of the year (1-12)
  • intptr MonthPtr: Month of the year (0-11) - Mainly useful for *setting*
  • int Year: Year
  • intptr YearPtr: Year-1900 (e.g. 0 is 1900, 100 is 2000) - Mainly useful for *setting*
  • string Time12: Time in hh:mm:ss given in 12-hour format
  • string Time24: Time in hh:mm:ss given in 24-hour format
  • string Date: Date in mm/dd/yyyy
  • bool Night: TRUE if current time is after 7pm and before 7am
  • int SecondsSinceMidnight: Number of seconds since midnight
  • uint Timestamp: Number of seconds since epoch (standard UNIX timestamp)


  • Set[timestamp]: Sets the value based on the given timestamp (standard UNIX timestamp, number of seconds since epoch)
  • Update: Updates the type after setting an individual member (NOT needed when using the Set method)

Declaring time Variables

time variables are initialized with a Timestamp. If a "default" is not given, it will default to the equivalent of timestamp 0.

Example 1

This sets a variable to the current time, which can be manipulated later.

Declare TimeVar time ${Time.Timestamp}

Setting date Values

declare myDate time local	
myDate.MonthPtr:Set[11]	/*month -1 */
myDate.YearPtr:Set[99]	/*year -1900 */
echo ${myDate.Date}
Output 12/31/1999

Setting time Values

time variables can be set as a whole by using the Set method, or some individual portions may be set via the intptr type's members. After setting individual portions, you should use time:Update in order to completely update the structure. This will make sure the date and time are actually valid -- for example, setting the "Day" to -1 and updating will result in the last day of the previous month.

Declare TimeVar time ${Time.Timestamp}
; Decrease the "day" by 14.  This may result in a negative value of Day, but 
; when TimeVar:Update is used, it will be the correct date for "2 weeks ago"
; This may show something like 05/-13/2005
echo ${TimeVar.Date}
; Update TimeVar 
; This will be a real date
echo ${TimeVar.Date}
; This will set the timestamp to the current time and date again
echo ${TimeVar.Date} ${TimeVar.Time}

Comparing time Values

Time comparison is actually quite simple. Rather than doing string comparisons, simply use the Timestamp member:

if "${TimeVar.Timestamp}>${Time.Timestamp}"
  echo TimeVar is ${Math.Calc[${TimeVar.Timestamp}-${Time.Timestamp}]} seconds into the future!

See Also

LavishScript Object Types