dateToNumber: Difference between revisions

From Bohemia Interactive Community
(updated data type for parsing)
m (Some wiki formatting)
 
Line 15: Line 15:
|gr1= Environment
|gr1= Environment


|descr= Convert a date to a float number, based on Jan 1st 00:00:00 = 0 and Dec 31st  23:59:59 = 1. The same day and time in leap year will be different after 28th of February and 23:59 on 31st of December will be 1.00274.<br><br>
|descr= Convert a date to a float number, based on Jan 1st 00:00:00 = 0 and Dec 31st  23:59:59 = 1.
This is how this command works. The 365 days of the year are presented in range 0...1. So each day will be:
The same day and time in leap year will be different after 28th of February and 23:59 on 31st of December will be 1.00274.<br><br>
This is how this command works. The 365 days of the year are presented in range 0..1. So each day will be:
<sqf>1 / 365 = 0.00273973</sqf>
<sqf>1 / 365 = 0.00273973</sqf>
In a leap year there are 366 days, so the range will increase by 1 day:
In a leap year there are 366 days, so the range will increase by 1 day:
Line 28: Line 29:
|r1= [[Number]]
|r1= [[Number]]


|x1= <sqf>_float = dateToNumber [2035,7,6,12,0]; // 0.510959</sqf>
|x1= <sqf>_float = dateToNumber [2035, 7, 6, 12, 0]; // 0.510959</sqf>


|x2= <sqf>dateToNumber date; // returns float number for the current date</sqf>
|x2= <sqf>dateToNumber date; // returns float number for the current date</sqf>
Line 34: Line 35:
|x3= Calculate days from 1/1/1970:
|x3= Calculate days from 1/1/1970:
<sqf>
<sqf>
fnc_daysFromEpoc =  
_fnc_daysFromEpoch =
{
{
private _year = param [0];
private _year = param [0];
private _days = 0;
private _days = 0;
for "_i" from 1970 to _year - 1 do  
for "_i" from 1970 to _year - 1 do
{
{
_days = _days + round linearConversion [0, 1, dateToNumber [_i, 12, 31, 23, 59], 0, 365, false];
_days = _days + round linearConversion [0, 1, dateToNumber [_i, 12, 31, 23, 59], 0, 365, false];
};
};
_days + linearConversion [0, 1, dateToNumber _this, 0, 365, false];
_days + linearConversion [0, 1, dateToNumber _this, 0, 365, false];
};
};


hint str (date call fnc_daysFromEpoc);
hint str (date call _fnc_daysFromEpoch);
</sqf>
</sqf>


|seealso= [[date]] [[dayTime]] [[time]] [[numberToDate]]
|seealso= [[date]] [[dayTime]] [[time]] [[numberToDate]]
}}
}}

Latest revision as of 18:31, 12 February 2026

Hover & click on the images for description

Description

Description:
Convert a date to a float number, based on Jan 1st 00:00:00 = 0 and Dec 31st 23:59:59 = 1. The same day and time in leap year will be different after 28th of February and 23:59 on 31st of December will be 1.00274.

This is how this command works. The 365 days of the year are presented in range 0..1. So each day will be:
1 / 365 = 0.00273973
In a leap year there are 366 days, so the range will increase by 1 day:
1 / 365 * 366 = 1.00274
In short, in a normal year the command returns in range 0...1 in a leap year it will return in range 0...1.00274.
Groups:
Environment

Syntax

Syntax:
dateToNumber date
Parameters:
date: Date
Return Value:
Number

Examples

Example 1:
_float = dateToNumber [2035, 7, 6, 12, 0]; // 0.510959
Example 2:
dateToNumber date; // returns float number for the current date
Example 3:
Calculate days from 1/1/1970:
_fnc_daysFromEpoch = { private _year = param [0]; private _days = 0; for "_i" from 1970 to _year - 1 do { _days = _days + round linearConversion [0, 1, dateToNumber [_i, 12, 31, 23, 59], 0, 365, false]; }; _days + linearConversion [0, 1, dateToNumber _this, 0, 365, false]; }; hint str (date call _fnc_daysFromEpoch);

Additional Information

See also:
date dayTime time numberToDate

Notes

Report bugs on the Feedback Tracker and/or discuss them on the Arma Discord.
Only post proven facts here! Add Note