mirror of
				https://github.com/esphome/esphome.git
				synced 2025-10-31 07:03:55 +00:00 
			
		
		
		
	Allow specifying deep sleep wakup clock time (#3312)
This commit is contained in:
		| @@ -176,6 +176,31 @@ void ESPTime::recalc_timestamp_utc(bool use_day_of_year) { | ||||
|   res += this->second; | ||||
|   this->timestamp = res; | ||||
| } | ||||
|  | ||||
| int32_t ESPTime::timezone_offset() { | ||||
|   int32_t offset = 0; | ||||
|   time_t now = ::time(nullptr); | ||||
|   auto local = ESPTime::from_epoch_local(now); | ||||
|   auto utc = ESPTime::from_epoch_utc(now); | ||||
|   bool negative = utc.hour > local.hour && local.day_of_year <= utc.day_of_year; | ||||
|  | ||||
|   if (utc.minute > local.minute) { | ||||
|     local.minute += 60; | ||||
|     local.hour -= 1; | ||||
|   } | ||||
|   offset += (local.minute - utc.minute) * 60; | ||||
|  | ||||
|   if (negative) { | ||||
|     offset -= (utc.hour - local.hour) * 3600; | ||||
|   } else { | ||||
|     if (utc.hour > local.hour) { | ||||
|       local.hour += 24; | ||||
|     } | ||||
|     offset += (local.hour - utc.hour) * 3600; | ||||
|   } | ||||
|   return offset; | ||||
| } | ||||
|  | ||||
| bool ESPTime::operator<(ESPTime other) { return this->timestamp < other.timestamp; } | ||||
| bool ESPTime::operator<=(ESPTime other) { return this->timestamp <= other.timestamp; } | ||||
| bool ESPTime::operator==(ESPTime other) { return this->timestamp == other.timestamp; } | ||||
|   | ||||
| @@ -88,6 +88,8 @@ struct ESPTime { | ||||
|   /// Convert this ESPTime instance back to a tm struct. | ||||
|   struct tm to_c_tm(); | ||||
|  | ||||
|   static int32_t timezone_offset(); | ||||
|  | ||||
|   /// Increment this clock instance by one second. | ||||
|   void increment_second(); | ||||
|   /// Increment this clock instance by one day. | ||||
|   | ||||
		Reference in New Issue
	
	Block a user