mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2024-11-25 00:50:22 +00:00
LibCore: Make DateTime's members signed
Core::DateTime is essentially a C++ wrapper of the tm struct, so we should support the same signed range as the underlying tm.
This commit is contained in:
parent
332b29c741
commit
95bc8e4641
Notes:
sideshowbarker
2024-07-18 05:28:59 +09:00
Author: https://github.com/IdanHo Commit: https://github.com/SerenityOS/serenity/commit/95bc8e46411 Pull-request: https://github.com/SerenityOS/serenity/pull/9518 Reviewed-by: https://github.com/BertalanD Reviewed-by: https://github.com/linusg ✅
3 changed files with 17 additions and 17 deletions
|
@ -48,7 +48,7 @@ inline bool is_leap_year(int year)
|
|||
return year % 4 == 0 && (year % 100 != 0 || year % 400 == 0);
|
||||
}
|
||||
|
||||
inline unsigned days_in_year(int year)
|
||||
inline int days_in_year(int year)
|
||||
{
|
||||
return 365 + is_leap_year(year);
|
||||
}
|
||||
|
|
|
@ -18,7 +18,7 @@ DateTime DateTime::now()
|
|||
return from_timestamp(time(nullptr));
|
||||
}
|
||||
|
||||
DateTime DateTime::create(unsigned year, unsigned month, unsigned day, unsigned hour, unsigned minute, unsigned second)
|
||||
DateTime DateTime::create(int year, int month, int day, int hour, int minute, int second)
|
||||
{
|
||||
DateTime dt;
|
||||
dt.set_time(year, month, day, hour, minute, second);
|
||||
|
@ -60,15 +60,15 @@ bool DateTime::is_leap_year() const
|
|||
return ::is_leap_year(m_year);
|
||||
}
|
||||
|
||||
void DateTime::set_time(unsigned year, unsigned month, unsigned day, unsigned hour, unsigned minute, unsigned second)
|
||||
void DateTime::set_time(int year, int month, int day, int hour, int minute, int second)
|
||||
{
|
||||
struct tm tm = {};
|
||||
tm.tm_sec = (int)second;
|
||||
tm.tm_min = (int)minute;
|
||||
tm.tm_hour = (int)hour;
|
||||
tm.tm_mday = (int)day;
|
||||
tm.tm_mon = (int)month - 1;
|
||||
tm.tm_year = (int)year - 1900;
|
||||
tm.tm_sec = second;
|
||||
tm.tm_min = minute;
|
||||
tm.tm_hour = hour;
|
||||
tm.tm_mday = day;
|
||||
tm.tm_mon = month - 1;
|
||||
tm.tm_year = year - 1900;
|
||||
tm.tm_isdst = -1;
|
||||
// mktime() doesn't read tm.tm_wday and tm.tm_yday, no need to fill them in.
|
||||
|
||||
|
|
|
@ -29,10 +29,10 @@ public:
|
|||
unsigned day_of_year() const;
|
||||
bool is_leap_year() const;
|
||||
|
||||
void set_time(unsigned year, unsigned month = 1, unsigned day = 0, unsigned hour = 0, unsigned minute = 0, unsigned second = 0);
|
||||
void set_time(int year, int month = 1, int day = 0, int hour = 0, int minute = 0, int second = 0);
|
||||
String to_string(const String& format = "%Y-%m-%d %H:%M:%S") const;
|
||||
|
||||
static DateTime create(unsigned year, unsigned month = 1, unsigned day = 0, unsigned hour = 0, unsigned minute = 0, unsigned second = 0);
|
||||
static DateTime create(int year, int month = 1, int day = 0, int hour = 0, int minute = 0, int second = 0);
|
||||
static DateTime now();
|
||||
static DateTime from_timestamp(time_t);
|
||||
static Optional<DateTime> parse(const String& format, const String& string);
|
||||
|
@ -41,12 +41,12 @@ public:
|
|||
|
||||
private:
|
||||
time_t m_timestamp { 0 };
|
||||
unsigned m_year { 0 };
|
||||
unsigned m_month { 0 };
|
||||
unsigned m_day { 0 };
|
||||
unsigned m_hour { 0 };
|
||||
unsigned m_minute { 0 };
|
||||
unsigned m_second { 0 };
|
||||
int m_year { 0 };
|
||||
int m_month { 0 };
|
||||
int m_day { 0 };
|
||||
int m_hour { 0 };
|
||||
int m_minute { 0 };
|
||||
int m_second { 0 };
|
||||
};
|
||||
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue