ff_i_datetime

Dates and time functions.

References

int GetTimeStamp(string sModifier = "utc")
Parameters:
  • sModifier – A SQLite datetime modifier

Returns the number of seconds since midnight on January 1, 1970.

struct HighResTime GetHighResTimeStamp(string sModifier = "UTC")
Parameters:
  • sModifier – A SQLite datetime modifier

Returns the number of seconds and microseconds since midnight on January 1, 1970.

int GetRealYear(string sModifier = "utc")
Parameters:
  • sModifier – A SQLite datetime modifier

Get year.

int GetRealMonth(string sModifier = "utc")
Parameters:
  • sModifier – A SQLite datetime modifier

Get month.

int GetRealDay(string sModifier = "utc")
Parameters:
  • sModifier – A SQLite datetime modifier

Get day.

int GetRealHour(string sModifier = "utc")
Parameters:
  • sModifier – A SQLite datetime modifier

Get hour (24 hour format)

int GetRealMinute(string sModifier = "utc")
Parameters:
  • sModifier – A SQLite datetime modifier

Get minutes.

int GetRealSecond(string sModifier = "utc")
Parameters:
  • sModifier – A SQLite datetime modifier

Get seconds.

string GetDateString(int nYear, int nMonth, int nDay)
Parameters:
  • nYear – Year

  • nMonth – Month

  • nDay – Day

Returns:

string Date formatted as “%Y-%M-%D”

Get year, month.

string GetGameDate()
Returns:

string Date formatted as “%Y-%M-%D”

Get game current date.

string GetRealDate(string sModifier = "utc")
Parameters:
  • sModifier – A SQLite datetime modifier

Returns:

string Date formatted as “%Y-%M-%D”

Get real world current date.

string GetTimeString(int nHour, int nMinutes, int nSeconds)
Parameters:
  • nHour – Hour

  • nMinutes – Minutes

  • nSeconds – Seconds

Returns:

string Date formatted as “%H-%m-%s”

Format hour, minutes, seconds.

string GetGameTime()
Returns:

string Time formatted as “%H:%m:%s”

Get game current time.

string GetRealTime(string sModifier = "utc")
Parameters:
  • sModifier – A SQLite datetime modifier

Returns:

string Time formatted as “%H:%m:%s”

Get real world current time.

Source code

// @code

#include "ff_i_string"


//! @struct HighResTime
//! @brief Struct containing seconds and microseconds. Functionally identical to NWNX_Util_HighResTimestamp.
struct HighResTime
{
  int seconds;       //!< seconds The number of whole seconds (s).
  int microseconds;  //!< microseconds The number of whole microseconds (us).
};


// -----------------------------------------------------------------------------

//! @brief Returns the number of seconds since midnight on January 1, 1970
//! @param sModifier A SQLite datetime modifier
int GetTimeStamp(string sModifier = "utc");
int GetTimeStamp(string sModifier = "utc")
{
  sqlquery sqlQuery = SqlPrepareQueryObject(GetModule(), "SELECT STRFTIME('%s', 'now', '" + sModifier + "')");
  SqlStep(sqlQuery);
  return SqlGetInt(sqlQuery, 0);
}


// -----------------------------------------------------------------------------

//! @brief Returns the number of seconds and microseconds since midnight on January 1, 1970
//! @param sModifier A SQLite datetime modifier
struct HighResTime GetHighResTimeStamp(string sModifier = "UTC");
struct HighResTime GetHighResTimeStamp(string sModifier = "UTC")
{
  sqlquery sqlQuery = SqlPrepareQueryObject(GetModule(), ""
    + "SELECT "
    + "CAST(STRFTIME('%s', 'now', '" + sModifier + "') AS INTEGER), "
    + "CAST(SUBSTR(STRFTIME('%f', 'now', '" + sModifier + "'), 4) AS INTEGER)");
  SqlStep(sqlQuery);

  struct HighResTime stRetval;
  stRetval.seconds = SqlGetInt(sqlQuery, 0);
  stRetval.microseconds = SqlGetInt(sqlQuery, 1);
  return stRetval;
}


// -----------------------------------------------------------------------------

// @brief Return localtime unit according to format: %Y,%M,%D,%H,%m or %s
// @param sModifier A SQLite datetime modifier
int _GetRealDateTime(string format, string sModifier = "UTC")
{
  sqlquery sqlQuery = SqlPrepareQueryObject(GetModule(), "SELECT CAST(STRFTIME(@format, 'now', '" + sModifier + "') AS INTEGER)");
  SqlBindString(sqlQuery, "@format", format);
  SqlStep(sqlQuery);
  return SqlGetInt(sqlQuery, 0);
}


// -----------------------------------------------------------------------------

//! @brief Get year
//! @param sModifier A SQLite datetime modifier
int GetRealYear(string sModifier = "utc");
int GetRealYear(string sModifier = "utc")
{
  return _GetRealDateTime("%Y", sModifier);
}


// -----------------------------------------------------------------------------

//! @brief Get month
//! @param sModifier A SQLite datetime modifier
int GetRealMonth(string sModifier = "utc");
int GetRealMonth(string sModifier = "utc")
{
  return _GetRealDateTime("%m", sModifier);
}


// -----------------------------------------------------------------------------

//! @brief Get day
//! @param sModifier A SQLite datetime modifier
int GetRealDay(string sModifier = "utc");
int GetRealDay(string sModifier = "utc")
{
  return _GetRealDateTime("%d", sModifier);
}


// -----------------------------------------------------------------------------

//! @brief Get hour (24 hour format)
//! @param sModifier A SQLite datetime modifier
int GetRealHour(string sModifier = "utc");
int GetRealHour(string sModifier = "utc")
{
  int nHour = _GetRealDateTime("%H", sModifier);
  return nHour % 24;
}


// -----------------------------------------------------------------------------

//! @brief Get minutes
//! @param sModifier A SQLite datetime modifier
int GetRealMinute(string sModifier = "utc");
int GetRealMinute(string sModifier = "utc")
{
  return _GetRealDateTime("%M", sModifier);
}


// -----------------------------------------------------------------------------

//! @brief Get seconds
//! @param sModifier A SQLite datetime modifier
int GetRealSecond(string sModifier = "utc");
int GetRealSecond(string sModifier = "utc")
{
  return _GetRealDateTime("%S", sModifier);
}


// -----------------------------------------------------------------------------

//! @brief Get year, month
//! @param nYear Year
//! @param nMonth Month
//! @param nDay Day
//! @returns string Date formatted as "%Y-%M-%D"
string GetDateString(int nYear, int nMonth, int nDay);
string GetDateString(int nYear, int nMonth, int nDay)
{
  return   GetStringLeftPad(IntToString(nYear), 4, "0") + "-"
         + GetStringLeftPad(IntToString(nMonth), 2, "0") + "-"
         + GetStringLeftPad(IntToString(nDay), 2, "0");
}


// -----------------------------------------------------------------------------

//! @brief Get game current date
//! @returns string Date formatted as "%Y-%M-%D"
string GetGameDate();
string GetGameDate()
{
  return GetDateString(GetCalendarYear(), GetCalendarMonth(), GetCalendarDay());
}


// -----------------------------------------------------------------------------

//! @brief Get real world current date
//! @param sModifier A SQLite datetime modifier
//! @returns string Date formatted as "%Y-%M-%D"
string GetRealDate(string sModifier = "utc");
string GetRealDate(string sModifier = "utc")
{
  return GetDateString(GetRealYear(sModifier), GetRealMonth(sModifier), GetRealDay(sModifier));
}


// -----------------------------------------------------------------------------

//! @brief Format hour, minutes, seconds
//! @param nHour Hour
//! @param nMinutes Minutes
//! @param nSeconds Seconds
//! @returns string Date formatted as "%H-%m-%s"
string GetTimeString(int nHour, int nMinutes, int nSeconds);
string GetTimeString(int nHour, int nMinutes, int nSeconds)
{
  // 0 means midnight, so modulo in case 24 was passed.
  nHour = nHour % 24;
  return   GetStringLeftPad(IntToString(nHour), 2, "0") + ":"
         + GetStringLeftPad(IntToString(nMinutes), 2, "0") + ":"
         + GetStringLeftPad(IntToString(nSeconds), 2, "0");
}


// -----------------------------------------------------------------------------

//! @brief Get game current time
//! @returns string Time formatted as "%H:%m:%s"
string GetGameTime();
string GetGameTime()
{
  return GetTimeString(GetTimeHour(), GetTimeMinute(), GetTimeSecond());
}


// -----------------------------------------------------------------------------

//! @brief Get real world current time
//! @param sModifier A SQLite datetime modifier
//! @returns string Time formatted as "%H:%m:%s"
string GetRealTime(string sModifier = "utc");
string GetRealTime(string sModifier = "utc")
{
  return GetTimeString(GetRealHour(sModifier), GetRealMonth(sModifier), GetRealSecond(sModifier));
}