About
A DateTimeData stores a date and a time. Using a DateTime structure, it stores the year, month, day, hour, minute and second.
For more specific operation related to time, see TimeValue Manual.
Access
Use C4DAtom::GetParameter() to retrieve the data of a parameter and cast it to DateTimeData.
if (dateTimeData == nullptr)
Definition: customgui_datetime.h:157
Definition: c4d_gedata.h:83
Int32 GetType() const
Definition: c4d_gedata.h:407
CustomDataType * GetCustomDataType(Int32 datatype) const
Definition: c4d_gedata.h:507
#define DATETIME_DATA
DateTime custom data ID.
Definition: customgui_datetime.h:23
maxon::Bool Bool
Definition: ge_sys_math.h:55
#define MAXON_SOURCE_LOCATION
Definition: memoryallocationbase.h:67
@ SKY_DATE_TIME
Definition: oskyshader.h:54
- DateTimeData::GetDateTime().
Retrieves the DateTime from DateTimeData.
Definition: string.h:1235
String TimeToString(const DateTime &d, const Bool bShowSeconds=true)
String DateToString(const DateTime &d)
DateTime GetDateTime() const
#define DiagnosticOutput(formatString,...)
Definition: debugdiagnostics.h:176
Represents a date and time.
Definition: customgui_datetime.h:39
- DateTimeData::SetDateTime().
Allows to set the DateTime to a DateTimeData.
if (dateTimeData == nullptr)
DateTime dateTime(1912, 6, 23, 23, 59, 59);
dateTimeData->SetDateTime(dateTime);
Definition: ge_autoptr.h:37
Use C4DAtom::SetParameter() to set the DateTimeData of your parameter.
The custom data type must be specified in the GeData constructor.
if (!success)
Definition: lib_description.h:330
Add a parameter in a description
A parameter can be added to a description with the function ::GetDDescription(). To attach a custom GUI to that parameter define DESC_CUSTOMGUI settings and call SetParameter(). See DateTimeControl Manual.
if (!singleid || cid.
IsPartOf(*singleid,
nullptr))
{
return false;
}
BaseContainer GetCustomDataTypeDefault(Int32 type)
Definition: c4d_basecontainer.h:47
void SetBool(Int32 id, Bool b)
Definition: c4d_basecontainer.h:498
void SetString(Int32 id, const maxon::String &s)
Definition: c4d_basecontainer.h:569
void SetInt32(Int32 id, Int32 l)
Definition: c4d_basecontainer.h:505
Bool IsPartOf(const DescID &cmp, Int32 *pos) const
#define DATETIME_GUI
DateTime custom GUI ID.
Definition: customgui_datetime.h:20
#define DATETIME_DATE_CONTROL
Bool true, if it is a calendar.
Definition: customgui_datetime.h:29
#define DATETIME_TIME_CONTROL
Bool true, if it is a clock.
Definition: customgui_datetime.h:28
#define DATETIME_NOW_BUTTON
Bool true, to add "Now" button.
Definition: customgui_datetime.h:30
@ DESC_CUSTOMGUI
Int32 The ID of the GUI for this element. Either a custom ID or one of: CUSTOMGUI
Definition: lib_description.h:125
@ DESC_NAME
String Name for standalone use.
Definition: lib_description.h:91
@ DESC_SHORT_NAME
String Short name, for attributes dialog.
Definition: lib_description.h:92
@ DESC_GUIOPEN
Bool true if the maximized GUI is shown by default.
Definition: lib_description.h:130
@ ID_OBJECTPROPERTIES
Definition: obase.h:56
Represents a level within a DescID.
Definition: lib_description.h:289
DateTime Structure
Represents a date and a time.
Inside DateTimeData, DataTime is only accessible via those functions:
DateTime timeSet(1912, 6, 23, 23, 59, 59);
if (dateTimeData == nullptr)
dateTimeData->SetDateTime(timeSet);
const DateTime timeGet = dateTimeData->GetDateTime();
DateTime Properties
The Structure of the DateTime is composed by those properties.
Constructors
A DateTime can be created passing some argument in the constructor as follow:
DateTime (Int32 t_year, Int32 t_month, Int32 t_day, Int32 t_hour, Int32 t_minute, Int32 t_second);
if (dateTimeData == nullptr)
DateTime dateTime(1912, 6, 23, 23, 59, 59);
value->SetDateTime(dateTime);
PyObject * value
Definition: abstract.h:715
@ DEFAULTVALUE
Dummy value for the default value GeData constructor.
Definition: c4d_gedata.h:65
TYPE * Release()
Definition: ge_autoptr.h:123
static void Free(DateTimeData *&pData)
Functionality
There are several functions to manipulate dates and times.
String
DateTime can be converted as a String with:
- FormatTime() Formats the given DateTime t and output it as a string. The format options are the same as strftime().
const Char* pszFormat =
"%H:%M:%S - %A - %d / %b / %G";
DiagnosticOutput(
"The DateTime @ in string using @ format result is @", dateTimeToString, pszFormat, dateTimeString);
maxon::Char Char
Definition: ge_sys_math.h:56
String FormatTime(const char *pszFormat, const DateTime &t)
- TimeToString() Converts a time as a formatted string (e.g. "12:34:56").
- DateToString() Converts a date as a formatted string. The format of the returned string depends on the current OS date and time settings.
DiagnosticOutput(
"The current time @ converted to a string @", dateTimeToString, dateToString);
- GetMonthName() Retrieves the name of a month in the current Cinema 4D interface language.
String GetMonthName(Int month)
void GetDateTimeNow(DateTime &t)
Int32 month
Month.
Definition: customgui_datetime.h:63
DateTime can also be parsed from String to Int32 with thoses functions:
- ParseTimeString() Parses a time string (e.g. "12:34:56").
- ParseDateString() Parses a date string (e.g. "31/12/2010").
int32_t Int32
32 bit signed integer datatype.
Definition: apibase.h:176
Bool ParseTimeString(String timestr, Int32 &hour, Int32 &minute, Int32 &second)
const char Py_ssize_t const char Py_ssize_t min
Definition: modsupport.h:58
time_t * sec
Definition: pytime.h:57
Julian format
Transforms DateTime to Julian date in both directions.
- GetJulianDay() return the modified Julian date. To get the correct Julian day, take the integer of the value and subtract 0.5.
- FromJulianDay() return a DateTime from the modified Julian date.
DiagnosticOutput(
"The date 25 December 2015 converted to a julian day is @", julianDay);
julianDay -= 0.5;
julianDay += 0.5;
Float64 Float
Definition: apibase.h:197
DateTime FromJulianDay(Float64 j)
Float64 GetJulianDay(const DateTime &t)
#define FormatString(...)
Definition: string.h:2100
Current DateTime
Retrieves the current date and time.
- GetDateTimeNow() Retrieves the current system date time and fill the parameter t with it.
- GetDateTimeNowGM() Retrieves the current system date time in GMT and fill the parameter t with it.
Convert DateTime
Converts date and time to GMT or local date and time.
- LocalToGMTime() Converts local time to GMT depending on the OS time zone settings.
- Warning
- LocalToGMTime will fail if the local date is before Jan 1, 1970 2.01 am or after Jan 18, 2038 7 pm.
- GMTimeToLocal() Converts GMT time to local depending on the OS time zone settings.
{
DiagnosticOutput(
"Local time @ to GMT result is @", localTimeToString, gmtTimeToString);
}
else
{
}
Bool LocalToGMTime(const DateTime &tLocal, DateTime &tGMT)
Day of week
Gets the day of the week.
- GetDayOfWeek() Gets the day of the week of the date lYear-lMonth-lDay and return DAYOFWEEK.
const maxon::String days[7] = {
"Monday"_s,
"Tuesday"_s,
"Wednesday"_s,
"Thursday"_s,
"Friday"_s,
"Saturday"_s,
"Sunday"_s };
DAYOFWEEK GetDayOfWeek(Int32 lYear, Int32 lMonth, Int32 lDay)
Validate
Tries to correct invalid data.
- ValidateDate() Tries to correct invalid date values, e.g. clamping the values within valid limits. (1700-2299, 1-12, compatible day for the passed month)
- ValidateTime() Tries to correct invalid time values, e.g. clamping the values within valid limits. (0h-23h 0-59m 0-59s)
DiagnosticOutput(
"Date before validate @ @ @ and after @ @ @", 2042, 125, 412, year, month, day);
void ValidateTime(Int32 &hour, Int32 &minute, Int32 &second)
void ValidateDate(Int32 &year, Int32 &month, Int32 &day)
Compare
There are several operators that can be used to compare DateTime.
- DateTime::operator== : return true if the first DateTime is the same as the second.
- DateTime::operator != : return true if the first DateTime is not the same as the second.
- DateTime::operator<= : return true if the first DateTime is before or equal to the second.
- DateTime::operator< : return true if the first DateTime is before the second.
- DateTime::operator >= : return true if the first DateTime is after or equal to the second.
- DateTime::operator > : return true if the first DateTime is after the second.
- CompareDateTime (const DateTime &a, const DateTime &b) compare two DateTime and return less than 0 if a < b, equal to 0 if a == b and greater than 0 if a > b.
const DateTime t1(1976, 04, 02, 18, 55, 22);
const DateTime t2(2019, 12, 25, 12, 55, 22);
else
PyObject PyObject * result
Definition: abstract.h:43
Int32 CompareDateTime(const DateTime &a, const DateTime &b)
Further Reading