diff --git a/include/time/seadDateTime.h b/include/time/seadDateTime.h index 6054e46b..1ce82146 100644 --- a/include/time/seadDateTime.h +++ b/include/time/seadDateTime.h @@ -16,6 +16,7 @@ class DateTime DateTime(const CalendarTime::Year& year, const CalendarTime::Month& month, const CalendarTime::Day& day, const CalendarTime::Hour& hour, const CalendarTime::Minute& minute, const CalendarTime::Second& second); + DateTime(const DateTimeUtc& unused); DateTime& operator+=(DateSpan span) { diff --git a/modules/src/time/seadDateTime.cpp b/modules/src/time/seadDateTime.cpp index a0e8e03a..2ddd5808 100644 --- a/modules/src/time/seadDateTime.cpp +++ b/modules/src/time/seadDateTime.cpp @@ -126,6 +126,26 @@ DateTime::DateTime(const CalendarTime::Year& year, const CalendarTime::Month& mo setUnixTime(year, month, day, hour, minute, second); } +DateTime::DateTime([[maybe_unused]] const DateTimeUtc& unused) +{ +#ifdef NNSDK + initializeSystemTimeModule(); + + nn::time::CalendarTime ctime; + // BUG: uses uninitialized `mUnixTime` instead of parameter `time`. + nn::time::PosixTime time = {mUnixTime}; + nn::time::ToCalendarTime(&ctime, nullptr, time); + + const auto year = CalendarTime::Year(ctime.year); + const auto month = CalendarTime::Month::makeFromValueOneOrigin(ctime.month); + const auto day = CalendarTime::Day(ctime.day); + const auto hour = CalendarTime::Hour(ctime.hour); + const auto minute = CalendarTime::Minute(ctime.minute); + const auto second = CalendarTime::Second(ctime.second); + setUnixTime(year, month, day, hour, minute, second); +#endif +} + u64 DateTime::setNow() { #ifdef NNSDK