OpenTTD AI API: AIDate Class Reference

OpenTTD AI API 15.0-beta3

Public Types | Static Public Member Functions
AIDate Class Reference

Class that handles all date related (calculation) functions. More...

`#include <script_date.hpp>`

Inheritance diagram for AIDate:

## Public Types
enum | Date { DATE_INVALID }
| Date data type is an integer value. More...

## Static Public Member Functions
static bool | IsValidDate (Date date)
| Validates if a date value represent a valid date.
static Date | GetCurrentDate ()
| Get the current date.
static int | GetYear (Date date)
| Get the year of the given date.
static int | GetMonth (Date date)
| Get the month of the given date.
static int | GetDayOfMonth (Date date)
| Get the day (of the month) of the given date.
static Date | GetDate (int year, int month, int day_of_month)
| Get the date given a year, month and day of month.

## Detailed Description

Class that handles all date related (calculation) functions.

Note
  Months and days of month are 1-based; the first month of the year is 1 and the first day of the month is also 1.
  Years are zero based; they start with the year 0.
  Dates can be used to determine the number of days between two different moments in time because they count the number of days since the year 0.

Calendar-Time

Calendar time measures the technological progression in the game.

- The calendar date is shown in the status bar.
- The calendar date affects engine model introduction and expiration.
- Progression of calendar time can be slowed or even halted via game settings.

Calendar time uses the Gregorian calendar with 365 or 366 days per year.

Economy-Time

Economy time measures the in-game time progression, while the game is not paused.

- Cargo production and consumption follows economy time.
- Recurring income and expenses follow economy time.
- Production and income statistics and balances are created per economy month/quarter/year.

Depending on game settings economy time is represented differently:

- Calendar-based timekeeping: Economy- and calendar-time use the identical Gregorian calendar.
- Wallclock-based timekeeping: Economy- and calendar-time are separate. Economy-time will use a 360 day calendar (12 months with 30 days each), which runs at a constant speed of one economy-month per realtime-minute. Calendar-time will use a Gregorian calendar, which can be slowed to stopped via game settings.

## Member Enumeration Documentation

## ◆ Date

enum AIDate::Date

Date data type is an integer value.

Use AIDate::GetDate to compose valid date values for a known year, month and day.

Enumerator
DATE_INVALID | A value representing an invalid date.

## Member Function Documentation

## ◆ GetCurrentDate()

static Date AIDate::GetCurrentDate | ( |  | ) |
| static

Get the current date.

This is the number of days since epoch under the assumption that there is a leap year every 4 years, except when dividable by 100 but not by 400.

Returns
  The current date.

## ◆ GetDate()

static Date AIDate::GetDate | ( | int | year,
|  | int | month,
|  | int | day_of_month
| ) |  |
| static

Get the date given a year, month and day of month.

Parameters

  year | The year of the to-be determined date.
  month | The month of the to-be determined date.
  day_of_month | The day of month of the to-be determined date.

Returns
  The date.

## ◆ GetDayOfMonth()

static int AIDate::GetDayOfMonth | ( | Date | date | ) |
| static

Get the day (of the month) of the given date.

Parameters

  date | The date to get the day of.

Returns
  The day.

## ◆ GetMonth()

static int AIDate::GetMonth | ( | Date | date | ) |
| static

Get the month of the given date.

Parameters

  date | The date to get the month of.

Returns
  The month.

## ◆ GetYear()

static int AIDate::GetYear | ( | Date | date | ) |
| static

Get the year of the given date.

Parameters

  date | The date to get the year of.

Returns
  The year.

## ◆ IsValidDate()

static bool AIDate::IsValidDate | ( | Date | date | ) |
| static

Validates if a date value represent a valid date.

Parameters

  date | The date to validate.

Returns
  True if the date is valid, otherwise false