diff --git a/builtin_date.go b/builtin_date.go index 3a05832..59ed8a5 100644 --- a/builtin_date.go +++ b/builtin_date.go @@ -9,7 +9,9 @@ import ( const ( // TODO Be like V8? // builtinDate_goDateTimeLayout = "Mon Jan 2 2006 15:04:05 GMT-0700 (MST)" - builtinDate_goDateTimeLayout = Time.RFC1123 + builtinDate_goDateTimeLayout = Time.RFC1123 // "Mon, 02 Jan 2006 15:04:05 MST" + builtinDate_goDateLayout = "Mon, 02 Jan 2006" + builtinDate_goTimeLayout = "15:04:05 MST" ) func builtinDate(call FunctionCall) Value { @@ -35,6 +37,22 @@ func builtinDate_toString(call FunctionCall) Value { return toValue(date.Time().Local().Format(builtinDate_goDateTimeLayout)) } +func builtinDate_toDateString(call FunctionCall) Value { + date := dateObjectOf(call.thisObject()) + if date.isNaN { + return toValue("Invalid Date") + } + return toValue(date.Time().Local().Format(builtinDate_goDateLayout)) +} + +func builtinDate_toTimeString(call FunctionCall) Value { + date := dateObjectOf(call.thisObject()) + if date.isNaN { + return toValue("Invalid Date") + } + return toValue(date.Time().Local().Format(builtinDate_goTimeLayout)) +} + func builtinDate_toUTCString(call FunctionCall) Value { date := dateObjectOf(call.thisObject()) if date.isNaN { diff --git a/date_test.go b/date_test.go index 22107e4..9454088 100644 --- a/date_test.go +++ b/date_test.go @@ -99,6 +99,11 @@ func TestDate(t *testing.T) { abc = Object.getOwnPropertyDescriptor(Date, "parse"); [ abc.value === Date.parse, abc.writable, abc.enumerable, abc.configurable ]; `, "true,true,false,true") + + test(` + abc = Object.getOwnPropertyDescriptor(Date.prototype, "toTimeString"); + [ abc.value === Date.prototype.toTimeString, abc.writable, abc.enumerable, abc.configurable ]; + `, "true,true,false,true") } func TestDate_parse(t *testing.T) { diff --git a/global.go b/global.go index 23b91b2..b5b4642 100644 --- a/global.go +++ b/global.go @@ -358,6 +358,8 @@ func newContext() *_runtime { builtinNewDate, self.Global.DatePrototype, "toString", 0, builtinDate_toString, + "toDateString", 0, builtinDate_toDateString, + "toTimeString", 0, builtinDate_toTimeString, "toUTCString", 0, builtinDate_toUTCString, "toGMTString", 0, builtinDate_toGMTString, "toLocaleString", 0, builtinDate_toLocaleString,