diff --git a/static_core/plugins/ets/stdlib/escompat/Date.ets b/static_core/plugins/ets/stdlib/escompat/Date.ets index f9e210187ab7bee3c4c61249182e43dfa77feb5c..7c3d74cb028e278c86de85334f1cc0f977054a00 100644 --- a/static_core/plugins/ets/stdlib/escompat/Date.ets +++ b/static_core/plugins/ets/stdlib/escompat/Date.ets @@ -748,12 +748,17 @@ export class Date { * @returns a language-sensitive representation of the time portion of the date with respect to locale. */ public toLocaleTimeString(locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions): string { + const curTime = this.getTime() + if(isNaN(curTime)) { + return "Invalid Date" + } + if (options && options.dateStyle) { throw new TypeError("Invalid option : dateStyle") } const effectiveOptions = !options ? Date.TIME_FORMAT_OPTIONS : this.appendDefaultTimeOptions(options!) - return new Intl.DateTimeFormat(intlLocalesToLanguageTags(locales), effectiveOptions).format(this.getTime()) + return new Intl.DateTimeFormat(intlLocalesToLanguageTags(locales), effectiveOptions).format(curTime) } /** diff --git a/static_core/plugins/ets/tests/ets_func_tests/escompat/DateTest.ets b/static_core/plugins/ets/tests/ets_func_tests/escompat/DateTest.ets index f338bde205a3503e3900db16ffe16dadc6b9ffb1..c1bb606b243c4da3f7fbd85952289014202530f9 100755 --- a/static_core/plugins/ets/tests/ets_func_tests/escompat/DateTest.ets +++ b/static_core/plugins/ets/tests/ets_func_tests/escompat/DateTest.ets @@ -400,6 +400,15 @@ function testDateToLocaleTimeString0001() { arktest.assertEQ(event.toLocaleTimeString('en-US'), expected.toLocaleTimeString('en-US')); } +function testDateToLocaleTimeString0002() { + let event = new Date('August 32, 1975 23:15:30 GMT+00:00'); + if (isUTC8Timezone()) { + arktest.assertEQ(event.toLocaleTimeString('en-US'), 'Invalid Date'); + } + arktest.assertEQ(event.toLocaleTimeString('en-US'), 'Invalid Date'); +} + + function testDateToLocaleTimeStringAndLocaleString0001() { let date = new Date(); // Defaults for toLocaleXXXString @@ -685,6 +694,7 @@ function main() { myTestsuite.addTest('testSpecialDateString', testSpecialDateString); myTestsuite.addTest('testDateToLocaleStringConstEvent0001', testDateToLocaleStringConstEvent0001); myTestsuite.addTest('testDateToLocaleTimeString0001', testDateToLocaleTimeString0001); + myTestsuite.addTest('testDateToLocaleTimeString0002', testDateToLocaleTimeString0002); myTestsuite.addTest('testDateToLocaleTimeStringAndLocaleString0001', testDateToLocaleTimeStringAndLocaleString0001); myTestsuite.addTest('testInvalidDate0002', testInvalidDate0002); myTestsuite.addTest('testSetTime0002', testSetTime0002);