@@ -218,10 +218,14 @@ uint64_t OS_Unix::get_unix_time() const {
|
||||
};
|
||||
|
||||
|
||||
OS::Date OS_Unix::get_date() const {
|
||||
OS::Date OS_Unix::get_date(bool utc) const {
|
||||
|
||||
time_t t=time(NULL);
|
||||
struct tm *lt=localtime(&t);
|
||||
struct tm *lt;
|
||||
if (utc)
|
||||
lt=gmtime(&t);
|
||||
else
|
||||
lt=localtime(&t);
|
||||
Date ret;
|
||||
ret.year=1900+lt->tm_year;
|
||||
ret.month=(Month)lt->tm_mon;
|
||||
@@ -231,17 +235,47 @@ OS::Date OS_Unix::get_date() const {
|
||||
|
||||
return ret;
|
||||
}
|
||||
OS::Time OS_Unix::get_time() const {
|
||||
|
||||
OS::Time OS_Unix::get_time(bool utc) const {
|
||||
time_t t=time(NULL);
|
||||
struct tm *lt=localtime(&t);
|
||||
struct tm *lt;
|
||||
if (utc)
|
||||
lt=gmtime(&t);
|
||||
else
|
||||
lt=localtime(&t);
|
||||
Time ret;
|
||||
ret.hour=lt->tm_hour;
|
||||
ret.min=lt->tm_min;
|
||||
ret.sec=lt->tm_sec;
|
||||
get_time_zone_info();
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
OS::TimeZoneInfo OS_Unix::get_time_zone_info() const {
|
||||
time_t t = time(NULL);
|
||||
struct tm *lt = localtime(&t);
|
||||
char name[16];
|
||||
strftime(name, 16, "%Z", lt);
|
||||
name[15] = 0;
|
||||
TimeZoneInfo ret;
|
||||
ret.name = name;
|
||||
|
||||
char bias_buf[16];
|
||||
strftime(bias_buf, 16, "%z", lt);
|
||||
int bias;
|
||||
bias_buf[15] = 0;
|
||||
sscanf(bias_buf, "%d", &bias);
|
||||
|
||||
// convert from ISO 8601 (1 minute=1, 1 hour=100) to minutes
|
||||
int hour = (int)bias / 100;
|
||||
int minutes = bias % 100;
|
||||
if (bias < 0)
|
||||
ret.bias = hour * 60 - minutes;
|
||||
else
|
||||
ret.bias = hour * 60 + minutes;
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
void OS_Unix::delay_usec(uint32_t p_usec) const {
|
||||
|
||||
usleep(p_usec);
|
||||
|
||||
@@ -88,8 +88,9 @@ public:
|
||||
|
||||
virtual String get_name();
|
||||
|
||||
virtual Date get_date() const;
|
||||
virtual Time get_time() const;
|
||||
virtual Date get_date(bool utc) const;
|
||||
virtual Time get_time(bool utc) const;
|
||||
virtual TimeZoneInfo get_time_zone_info() const;
|
||||
|
||||
virtual uint64_t get_unix_time() const;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user