mirror of
https://github.com/RGBCube/serenity
synced 2025-07-27 09:47:35 +00:00
LibJS Date: Added "Invalid Date".
Setting an invalid value on a Date object now makes it invalid. Setting it again but with correct values makes it valid again.
This commit is contained in:
parent
d231c5e65b
commit
ca49f96b78
29 changed files with 490 additions and 89 deletions
|
@ -35,9 +35,9 @@ class Date final : public Object {
|
|||
JS_OBJECT(Date, Object);
|
||||
|
||||
public:
|
||||
static Date* create(GlobalObject&, Core::DateTime, u16 milliseconds);
|
||||
static Date* create(GlobalObject&, Core::DateTime, u16 milliseconds, bool is_invalid = false);
|
||||
|
||||
Date(Core::DateTime datetime, u16 milliseconds, Object& prototype);
|
||||
Date(Core::DateTime datetime, u16 milliseconds, bool is_invalid, Object& prototype);
|
||||
virtual ~Date() override;
|
||||
|
||||
Core::DateTime& datetime() { return m_datetime; }
|
||||
|
@ -54,6 +54,9 @@ public:
|
|||
double time() const { return datetime().timestamp() * 1000.0 + milliseconds(); }
|
||||
int year() const { return datetime().day(); }
|
||||
|
||||
bool is_invalid() const { return m_is_invalid; }
|
||||
void set_is_invalid(bool value) { m_is_invalid = value; }
|
||||
|
||||
int utc_date() const;
|
||||
int utc_day() const;
|
||||
int utc_full_year() const;
|
||||
|
@ -73,6 +76,9 @@ public:
|
|||
String time_string() const { return m_datetime.to_string("%T GMT+0000 (UTC)"); }
|
||||
String string() const
|
||||
{
|
||||
if (is_invalid())
|
||||
return "Invalid Date";
|
||||
|
||||
return String::formatted("{} {}", date_string(), time_string());
|
||||
}
|
||||
|
||||
|
@ -94,6 +100,7 @@ private:
|
|||
|
||||
Core::DateTime m_datetime;
|
||||
u16 m_milliseconds;
|
||||
bool m_is_invalid { false };
|
||||
};
|
||||
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue