222#if OS(WINDOWS)
223 SYSTEMTIME systemTime;
224 memset(&systemTime, 0, sizeof(systemTime));
225 systemTime.wYear = gdt.year + 1900;
226 systemTime.wMonth = gdt.month + 1;
227 systemTime.wDay = gdt.monthDay;
228 systemTime.wDayOfWeek = gdt.weekDay;
229 systemTime.wHour = gdt.hour;
230 systemTime.wMinute = gdt.minute;
231 systemTime.wSecond = gdt.second;
232
233 Vector<UChar, 128> buffer;
234 size_t length = 0;
235
236 if (format == LocaleDate) {
237 buffer.resize(GetDateFormatW(LOCALE_USER_DEFAULT, 0, &systemTime, 0, 0, 0));
238 length = GetDateFormatW(LOCALE_USER_DEFAULT, 0, &systemTime, 0, buffer.data(), buffer.size());
239 } else if (format == LocaleTime) {
240 buffer.resize(GetTimeFormatW(LOCALE_USER_DEFAULT, 0, &systemTime, 0, 0, 0));
241 length = GetTimeFormatW(LOCALE_USER_DEFAULT, 0, &systemTime, 0, buffer.data(), buffer.size());
242 } else if (format == LocaleDateAndTime) {
243 buffer.resize(GetDateFormatW(LOCALE_USER_DEFAULT, 0, &systemTime, 0, 0, 0) + GetTimeFormatW(LOCALE_USER_DEFAULT, 0, &systemTime, 0, 0, 0));
244 length = GetDateFormatW(LOCALE_USER_DEFAULT, 0, &systemTime, 0, buffer.data(), buffer.size());
245 if (length) {
246 buffer[length - 1] = ' ';
247 length += GetTimeFormatW(LOCALE_USER_DEFAULT, 0, &systemTime, 0, buffer.data() + length, buffer.size() - length);
248 }
249 } else
250 ASSERT_NOT_REACHED();
251
252 // Remove terminating null character.
253 if (length)
254 length--;
255
256 return jsNontrivialString(exec, UString(buffer.data(), length));
257
258#else // OS(WINDOWS)
259