Fixes the month consistency issue in enums and get_date etc

- Also updated the docs to reflect this.
- Added some vim temp files to gitignore
- Changed NaCL to be consistent with the other OS_Unix::get_date implementation
   (added 1 to month to map to 1-12)

Ticket:
https://github.com/godotengine/godot/issues/4025
This commit is contained in:
Kyle Luce 2016-03-12 19:13:57 -07:00
parent be4d58e120
commit feef563f3f
7 changed files with 45 additions and 18 deletions

3
.gitignore vendored
View file

@ -65,6 +65,9 @@ platform/android/libs/play_licensing/gen/*
.deps/* .deps/*
.dirstamp .dirstamp
# Vim temp files
*.swo
*.swp
# QT project files # QT project files
*.config *.config

View file

@ -508,11 +508,11 @@ Dictionary _OS::get_time(bool utc) const {
} }
/** /**
* Get a dictionary of time values when given epoc time * Get a dictionary of time values when given epoch time
* *
* Dictionary Time values will be a union if values from #get_time * Dictionary Time values will be a union if values from #get_time
* and #get_date dictionaries (with the exception of dst = * and #get_date dictionaries (with the exception of dst =
* day light standard time, as it cannot be determined from epoc) * day light standard time, as it cannot be determined from epoch)
*/ */
Dictionary _OS::get_time_from_unix_time( uint64_t unix_time_val) const { Dictionary _OS::get_time_from_unix_time( uint64_t unix_time_val) const {
@ -552,7 +552,8 @@ Dictionary _OS::get_time_from_unix_time( uint64_t unix_time_val) const {
imonth++; imonth++;
} }
date.month = static_cast<OS::Month>(imonth); /// Add 1 to month to make sure months are indexed starting at 1
date.month = static_cast<OS::Month>(imonth+1);
date.day = dayno + 1; date.day = dayno + 1;

View file

@ -81,7 +81,9 @@ public:
}; };
enum Month { enum Month {
MONTH_JANUARY, /// Start at 1 to follow Windows SYSTEMTIME structure
/// https://msdn.microsoft.com/en-us/library/windows/desktop/ms724950(v=vs.85).aspx
MONTH_JANUARY = 1,
MONTH_FEBRUARY, MONTH_FEBRUARY,
MONTH_MARCH, MONTH_MARCH,
MONTH_APRIL, MONTH_APRIL,

View file

@ -224,7 +224,9 @@ public:
}; };
enum Month { enum Month {
MONTH_JANUARY, /// Start at 1 to follow Windows SYSTEMTIME structure
/// https://msdn.microsoft.com/en-us/library/windows/desktop/ms724950(v=vs.85).aspx
MONTH_JANUARY = 1,
MONTH_FEBRUARY, MONTH_FEBRUARY,
MONTH_MARCH, MONTH_MARCH,
MONTH_APRIL, MONTH_APRIL,

View file

@ -20639,6 +20639,18 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8)
<description> <description>
</description> </description>
</method> </method>
<method name="get_time_from_unix_time" qualifiers="const">
<return type="Dictionary">
</return>
<argument index="0" name="unix_time_val" type="int">
</argument>
<description>
Get a dictionary of time values when given epoch time.
Dictionary Time values will be a union of values from [method get_time]
and [method get_date] dictionaries (with the exception of dst =
day light standard time, as it cannot be determined from epoc)
</description>
</method>
<method name="get_time_zone_info" qualifiers="const"> <method name="get_time_zone_info" qualifiers="const">
<return type="Dictionary"> <return type="Dictionary">
</return> </return>
@ -20922,29 +20934,29 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8)
</constant> </constant>
<constant name="DAY_SATURDAY" value="6"> <constant name="DAY_SATURDAY" value="6">
</constant> </constant>
<constant name="MONTH_JANUARY" value="0"> <constant name="MONTH_JANUARY" value="1">
</constant> </constant>
<constant name="MONTH_FEBRUARY" value="1"> <constant name="MONTH_FEBRUARY" value="2">
</constant> </constant>
<constant name="MONTH_MARCH" value="2"> <constant name="MONTH_MARCH" value="3">
</constant> </constant>
<constant name="MONTH_APRIL" value="3"> <constant name="MONTH_APRIL" value="4">
</constant> </constant>
<constant name="MONTH_MAY" value="4"> <constant name="MONTH_MAY" value="5">
</constant> </constant>
<constant name="MONTH_JUNE" value="5"> <constant name="MONTH_JUNE" value="6">
</constant> </constant>
<constant name="MONTH_JULY" value="6"> <constant name="MONTH_JULY" value="7">
</constant> </constant>
<constant name="MONTH_AUGUST" value="7"> <constant name="MONTH_AUGUST" value="8">
</constant> </constant>
<constant name="MONTH_SEPTEMBER" value="8"> <constant name="MONTH_SEPTEMBER" value="9">
</constant> </constant>
<constant name="MONTH_OCTOBER" value="9"> <constant name="MONTH_OCTOBER" value="10">
</constant> </constant>
<constant name="MONTH_NOVEMBER" value="10"> <constant name="MONTH_NOVEMBER" value="11">
</constant> </constant>
<constant name="MONTH_DECEMBER" value="11"> <constant name="MONTH_DECEMBER" value="12">
</constant> </constant>
<constant name="SCREEN_ORIENTATION_LANDSCAPE" value="0"> <constant name="SCREEN_ORIENTATION_LANDSCAPE" value="0">
</constant> </constant>

View file

@ -251,6 +251,9 @@ OS::Date OS_Unix::get_date(bool utc) const {
lt=localtime(&t); lt=localtime(&t);
Date ret; Date ret;
ret.year=1900+lt->tm_year; ret.year=1900+lt->tm_year;
// Index starting at 1 to match OS_Unix::get_date
// and Windows SYSTEMTIME and tm_mon follows the typical structure
// of 0-11, noted here: http://www.cplusplus.com/reference/ctime/tm/
ret.month=(Month)(lt->tm_mon + 1); ret.month=(Month)(lt->tm_mon + 1);
ret.day=lt->tm_mday; ret.day=lt->tm_mday;
ret.weekday=(Weekday)lt->tm_wday; ret.weekday=(Weekday)lt->tm_wday;

View file

@ -249,7 +249,11 @@ OS::Date OSNacl::get_date(bool utc) const {
lt=localtime(&t); lt=localtime(&t);
Date ret; Date ret;
ret.year=lt->tm_year; ret.year=lt->tm_year;
ret.month=(Month)lt->tm_mon;
// Index starting at 1 to match OS_Unix::get_date
// and Windows SYSTEMTIME and tm_mon follows the typical structure
// of 0-11, noted here: http://www.cplusplus.com/reference/ctime/tm/
ret.month=(Month)(lt->tm_mon+1);
ret.day=lt->tm_mday; ret.day=lt->tm_mday;
ret.weekday=(Weekday)lt->tm_wday; ret.weekday=(Weekday)lt->tm_wday;
ret.dst=lt->tm_isdst; ret.dst=lt->tm_isdst;