1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-16 04:04:58 +00:00
serenity/Userland/Libraries/LibJS/Runtime/Temporal/PlainYearMonth.cpp
Linus Groh c303bbde54 LibJS: Implement Temporal.Now.plainDate()
...and ten required AOs we didn't have yet:

- BalanceISODate
- BalanceISODateTime
- BalanceISOYearMonth
- BalanceTime
- BuiltinTimeZoneGetPlainDateTimeFor
- GetISOPartsFromEpoch
- GetOffsetNanosecondsFor
- ParseTemporalTimeZone
- SystemDateTime
- ToTemporalTimeZone
2021-07-27 19:51:44 +01:00

26 lines
731 B
C++
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*
* Copyright (c) 2021, Linus Groh <linusg@serenityos.org>
*
* SPDX-License-Identifier: BSD-2-Clause
*/
#include <LibJS/Runtime/Temporal/PlainYearMonth.h>
namespace JS::Temporal {
// 9.5.5 BalanceISOYearMonth ( year, month ), https://tc39.es/proposal-temporal/#sec-temporal-balanceisoyearmonth
ISOYearMonth balance_iso_year_month(i32 year, i32 month)
{
// 1. Assert: year and month are integers.
// 2. Set year to year + floor((month - 1) / 12).
year += (month - 1) / 12;
// 3. Set month to (month 1) modulo 12 + 1.
month = (month - 1) % 12 + 1;
// 4. Return the new Record { [[Year]]: year, [[Month]]: month }.
return ISOYearMonth { .year = year, .month = static_cast<u8>(month) };
}
}