fix: rearrange internal int types in datetimes

This commit is contained in:
ToruNiina
2019-06-20 23:57:40 +09:00
parent 8208bbf236
commit 71ff54e76c
2 changed files with 11 additions and 11 deletions

View File

@@ -46,7 +46,7 @@ inline std::tm localtime_s(const std::time_t* src)
#endif #endif
} // detail } // detail
enum class month_t : std::int8_t enum class month_t : std::uint8_t
{ {
Jan = 0, Jan = 0,
Feb = 1, Feb = 1,
@@ -98,9 +98,9 @@ struct local_date
t.tm_sec = 0; t.tm_sec = 0;
t.tm_min = 0; t.tm_min = 0;
t.tm_hour = 0; t.tm_hour = 0;
t.tm_mday = this->day; t.tm_mday = static_cast<int>(this->day);
t.tm_mon = this->month; t.tm_mon = static_cast<int>(this->month);
t.tm_year = this->year - 1900; t.tm_year = static_cast<int>(this->year) - 1900;
t.tm_wday = 0; // the value will be ignored t.tm_wday = 0; // the value will be ignored
t.tm_yday = 0; // the value will be ignored t.tm_yday = 0; // the value will be ignored
t.tm_isdst = -1; t.tm_isdst = -1;

View File

@@ -660,9 +660,9 @@ parse_local_time(location<Container>& loc)
{{std::addressof(inner_loc), "here"}})); {{std::addressof(inner_loc), "here"}}));
} }
local_time time( local_time time(
static_cast<std::int8_t>(from_string<int>(h.unwrap().str(), 0)), from_string<int>(h.unwrap().str(), 0),
static_cast<std::int8_t>(from_string<int>(m.unwrap().str(), 0)), from_string<int>(m.unwrap().str(), 0),
static_cast<std::int8_t>(from_string<int>(s.unwrap().str(), 0)), 0, 0); from_string<int>(s.unwrap().str(), 0), 0, 0);
const auto before_secfrac = inner_loc.iter(); const auto before_secfrac = inner_loc.iter();
if(const auto secfrac = lex_time_secfrac::invoke(inner_loc)) if(const auto secfrac = lex_time_secfrac::invoke(inner_loc))
@@ -678,13 +678,13 @@ parse_local_time(location<Container>& loc)
} }
if(sf.size() >= 6) if(sf.size() >= 6)
{ {
time.millisecond = from_string<std::int16_t>(sf.substr(0, 3), 0); time.millisecond = from_string<std::uint16_t>(sf.substr(0, 3), 0u);
time.microsecond = from_string<std::int16_t>(sf.substr(3, 3), 0); time.microsecond = from_string<std::uint16_t>(sf.substr(3, 3), 0u);
} }
else if(sf.size() >= 3) else if(sf.size() >= 3)
{ {
time.millisecond = from_string<std::int16_t>(sf, 0); time.millisecond = from_string<std::uint16_t>(sf, 0u);
time.microsecond = 0; time.microsecond = 0u;
} }
} }
else else