mirror of
				https://github.com/ciphervance/supercell-wx.git
				synced 2025-10-31 20:20:05 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			50 lines
		
	
	
	
		
			1.2 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			50 lines
		
	
	
	
		
			1.2 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| #pragma once
 | |
| 
 | |
| #include <scwx/util/iterator.hpp>
 | |
| 
 | |
| #include <chrono>
 | |
| #include <optional>
 | |
| #include <string>
 | |
| 
 | |
| #if (__cpp_lib_chrono < 201907L)
 | |
| #   include <date/tz.h>
 | |
| #endif
 | |
| 
 | |
| namespace scwx
 | |
| {
 | |
| namespace util
 | |
| {
 | |
| 
 | |
| #if (__cpp_lib_chrono >= 201907L)
 | |
| typedef std::chrono::time_zone time_zone;
 | |
| #else
 | |
| typedef date::time_zone time_zone;
 | |
| #endif
 | |
| 
 | |
| enum class ClockFormat
 | |
| {
 | |
|    _12Hour,
 | |
|    _24Hour,
 | |
|    Unknown
 | |
| };
 | |
| typedef scwx::util::
 | |
|    Iterator<ClockFormat, ClockFormat::_12Hour, ClockFormat::_24Hour>
 | |
|       ClockFormatIterator;
 | |
| 
 | |
| ClockFormat        GetClockFormat(const std::string& name);
 | |
| const std::string& GetClockFormatName(ClockFormat clockFormat);
 | |
| 
 | |
| std::chrono::system_clock::time_point TimePoint(uint32_t modifiedJulianDate,
 | |
|                                                 uint32_t milliseconds);
 | |
| 
 | |
| std::string TimeString(std::chrono::system_clock::time_point time,
 | |
|                        ClockFormat      clockFormat = ClockFormat::_24Hour,
 | |
|                        const time_zone* timeZone    = nullptr,
 | |
|                        bool             epochValid  = true);
 | |
| 
 | |
| template<typename T>
 | |
| std::optional<std::chrono::sys_time<T>>
 | |
| TryParseDateTime(const std::string& dateTimeFormat, const std::string& str);
 | |
| 
 | |
| } // namespace util
 | |
| } // namespace scwx
 | 
