PlainTime.h 1020 B

1234567891011121314151617181920212223242526272829303132
  1. /*
  2. * Copyright (c) 2021, Idan Horowitz <idan.horowitz@serenityos.org>
  3. * Copyright (c) 2021-2023, Linus Groh <linusg@serenityos.org>
  4. * Copyright (c) 2024, Tim Flynn <trflynn89@ladybird.org>
  5. *
  6. * SPDX-License-Identifier: BSD-2-Clause
  7. */
  8. #pragma once
  9. #include <AK/Types.h>
  10. namespace JS::Temporal {
  11. // 4.5.1 Time Records, https://tc39.es/proposal-temporal/#sec-temporal-time-records
  12. struct Time {
  13. double days { 0 };
  14. u8 hour { 0 };
  15. u8 minute { 0 };
  16. u8 second { 0 };
  17. u16 millisecond { 0 };
  18. u16 microsecond { 0 };
  19. u16 nanosecond { 0 };
  20. };
  21. Time create_time_record(double hour, double minute, double second, double millisecond, double microsecond, double nanosecond, double delta_days = 0);
  22. Time midnight_time_record();
  23. Time noon_time_record();
  24. bool is_valid_time(double hour, double minute, double second, double millisecond, double microsecond, double nanosecond);
  25. Time balance_time(double hour, double minute, double second, double millisecond, double microsecond, double nanosecond);
  26. }