Changeset 123505 in webkit
- Timestamp:
- Jul 24, 2012 12:25:30 PM (12 years ago)
- Location:
- trunk/Source
- Files:
-
- 10 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/JavaScriptCore/ChangeLog
r123503 r123505 1 2012-07-24 Patrick Gansterer <paroga@webkit.org> 2 3 Store the full year in GregorianDateTime 4 https://bugs.webkit.org/show_bug.cgi?id=92067 5 6 Reviewed by Geoffrey Garen. 7 8 Use the full year instead of the offset from year 1900 9 for the year member variable of GregorianDateTime. 10 11 * runtime/DateConstructor.cpp: 12 (JSC::constructDate): 13 (JSC::dateUTC): 14 * runtime/DateConversion.cpp: 15 (JSC::formatDate): 16 (JSC::formatDateUTCVariant): 17 * runtime/DatePrototype.cpp: 18 (JSC::formatLocaleDate): 19 (JSC::fillStructuresUsingDateArgs): 20 (JSC::dateProtoFuncToISOString): 21 (JSC::dateProtoFuncGetFullYear): 22 (JSC::dateProtoFuncGetUTCFullYear): 23 (JSC::dateProtoFuncSetYear): 24 * runtime/JSDateMath.cpp: 25 (JSC::gregorianDateTimeToMS): 26 (JSC::msToGregorianDateTime): 27 1 28 2012-07-24 Patrick Gansterer <paroga@webkit.org> 2 29 -
trunk/Source/JavaScriptCore/runtime/DateConstructor.cpp
r123425 r123505 137 137 GregorianDateTime t; 138 138 int year = JSC::toInt32(doubleArguments[0]); 139 t.setYear((year >= 0 && year <= 99) ? year : year - 1900);139 t.setYear((year >= 0 && year <= 99) ? (year + 1900) : year); 140 140 t.setMonth(JSC::toInt32(doubleArguments[1])); 141 141 t.setMonthDay((numArgs >= 3) ? JSC::toInt32(doubleArguments[2]) : 1); … … 215 215 GregorianDateTime t; 216 216 int year = JSC::toInt32(doubleArguments[0]); 217 t.setYear((year >= 0 && year <= 99) ? year : year - 1900);217 t.setYear((year >= 0 && year <= 99) ? (year + 1900) : year); 218 218 t.setMonth(JSC::toInt32(doubleArguments[1])); 219 219 t.setMonthDay((n >= 3) ? JSC::toInt32(doubleArguments[2]) : 1); -
trunk/Source/JavaScriptCore/runtime/DateConversion.cpp
r123425 r123505 60 60 snprintf(buffer, DateConversionBufferSize, "%s %s %02d %04d", 61 61 weekdayName[(t.weekDay() + 6) % 7], 62 monthName[t.month()], t.monthDay(), t.year() + 1900);62 monthName[t.month()], t.monthDay(), t.year()); 63 63 } 64 64 … … 67 67 snprintf(buffer, DateConversionBufferSize, "%s, %02d %s %04d", 68 68 weekdayName[(t.weekDay() + 6) % 7], 69 t.monthDay(), monthName[t.month()], t.year() + 1900);69 t.monthDay(), monthName[t.month()], t.year()); 70 70 } 71 71 -
trunk/Source/JavaScriptCore/runtime/DatePrototype.cpp
r123425 r123505 223 223 SYSTEMTIME systemTime; 224 224 memset(&systemTime, 0, sizeof(systemTime)); 225 systemTime.wYear = gdt.year() + 1900;225 systemTime.wYear = gdt.year(); 226 226 systemTime.wMonth = gdt.month() + 1; 227 227 systemTime.wDay = gdt.monthDay(); … … 266 266 // Offset year if needed 267 267 struct tm localTM = gdt; 268 int year = gdt.year() + 1900;268 int year = gdt.year(); 269 269 bool yearNeedsOffset = year < 1900 || year > 2038; 270 270 if (yearNeedsOffset) … … 413 413 double years = exec->argument(idx++).toIntegerPreserveNaN(exec); 414 414 ok = isfinite(years); 415 t->setYear(toInt32(years - 1900));415 t->setYear(toInt32(years)); 416 416 } 417 417 // months … … 568 568 if (ms < 0) 569 569 ms += msPerSecond; 570 if (gregorianDateTime->year() > 8099 || gregorianDateTime->year() < -1900)571 snprintf(buffer, sizeof(buffer) - 1, "%+07d-%02d-%02dT%02d:%02d:%02d.%03dZ", 1900 +gregorianDateTime->year(), gregorianDateTime->month() + 1, gregorianDateTime->monthDay(), gregorianDateTime->hour(), gregorianDateTime->minute(), gregorianDateTime->second(), ms);570 if (gregorianDateTime->year() > 9999 || gregorianDateTime->year() < 0) 571 snprintf(buffer, sizeof(buffer) - 1, "%+07d-%02d-%02dT%02d:%02d:%02d.%03dZ", gregorianDateTime->year(), gregorianDateTime->month() + 1, gregorianDateTime->monthDay(), gregorianDateTime->hour(), gregorianDateTime->minute(), gregorianDateTime->second(), ms); 572 572 else 573 snprintf(buffer, sizeof(buffer) - 1, "%04d-%02d-%02dT%02d:%02d:%02d.%03dZ", 1900 +gregorianDateTime->year(), gregorianDateTime->month() + 1, gregorianDateTime->monthDay(), gregorianDateTime->hour(), gregorianDateTime->minute(), gregorianDateTime->second(), ms);573 snprintf(buffer, sizeof(buffer) - 1, "%04d-%02d-%02dT%02d:%02d:%02d.%03dZ", gregorianDateTime->year(), gregorianDateTime->month() + 1, gregorianDateTime->monthDay(), gregorianDateTime->hour(), gregorianDateTime->minute(), gregorianDateTime->second(), ms); 574 574 buffer[sizeof(buffer) - 1] = 0; 575 575 return JSValue::encode(jsNontrivialString(exec, buffer)); … … 658 658 if (!gregorianDateTime) 659 659 return JSValue::encode(jsNaN()); 660 return JSValue::encode(jsNumber( 1900 +gregorianDateTime->year()));660 return JSValue::encode(jsNumber(gregorianDateTime->year())); 661 661 } 662 662 … … 672 672 if (!gregorianDateTime) 673 673 return JSValue::encode(jsNaN()); 674 return JSValue::encode(jsNumber( 1900 +gregorianDateTime->year()));674 return JSValue::encode(jsNumber(gregorianDateTime->year())); 675 675 } 676 676 … … 1117 1117 } 1118 1118 1119 gregorianDateTime.setYear(toInt32((year > 99 || year < 0) ? year - 1900: year));1119 gregorianDateTime.setYear(toInt32((year >= 0 && year <= 99) ? (year + 1900) : year)); 1120 1120 JSValue result = jsNumber(gregorianDateTimeToMS(exec, gregorianDateTime, ms, false)); 1121 1121 thisDateObj->setInternalValue(exec->globalData(), result); -
trunk/Source/JavaScriptCore/runtime/JSDateMath.cpp
r123425 r123505 204 204 double gregorianDateTimeToMS(ExecState* exec, const GregorianDateTime& t, double milliSeconds, bool inputIsUTC) 205 205 { 206 double day = dateToDaysFrom1970(t.year() + 1900, t.month(), t.monthDay());206 double day = dateToDaysFrom1970(t.year(), t.month(), t.monthDay()); 207 207 double ms = timeToMS(t.hour(), t.minute(), t.second(), milliSeconds); 208 208 double result = (day * WTF::msPerDay) + ms; … … 236 236 tm.setMonthDay(dayInMonthFromDayInYear(tm.yearDay(), isLeapYear(year))); 237 237 tm.setMonth(monthFromDayInYear(tm.yearDay(), isLeapYear(year))); 238 tm.setYear(year - 1900);238 tm.setYear(year); 239 239 tm.setIsDST(dstOff != 0.0); 240 240 tm.setUtcOffset(static_cast<long>((dstOff + utcOff) / WTF::msPerSecond)); -
trunk/Source/WTF/ChangeLog
r123425 r123505 1 2012-07-24 Patrick Gansterer <paroga@webkit.org> 2 3 Store the full year in GregorianDateTime 4 https://bugs.webkit.org/show_bug.cgi?id=92067 5 6 Reviewed by Geoffrey Garen. 7 8 Use the full year instead of the offset from year 1900 9 for the year member variable of GregorianDateTime. 10 11 * wtf/GregorianDateTime.h: 12 (WTF::GregorianDateTime::operator tm): 13 1 14 2012-07-23 Patrick Gansterer <paroga@webkit.org> 2 15 -
trunk/Source/WTF/wtf/GregorianDateTime.h
r123425 r123505 74 74 memset(&ret, 0, sizeof(ret)); 75 75 76 ret.tm_year = m_year ;76 ret.tm_year = m_year - 1900; 77 77 ret.tm_mon = m_month; 78 78 ret.tm_yday = m_yearDay; -
trunk/Source/WebCore/ChangeLog
r123504 r123505 1 2012-07-24 Patrick Gansterer <paroga@webkit.org> 2 3 Store the full year in GregorianDateTime 4 https://bugs.webkit.org/show_bug.cgi?id=92067 5 6 Reviewed by Geoffrey Garen. 7 8 Use the full year instead of the offset from year 1900 9 for the year member variable of GregorianDateTime. 10 11 * bridge/qt/qt_runtime.cpp: 12 (JSC::Bindings::convertValueToQVariant): 13 (JSC::Bindings::convertQVariantToValue): 14 * bridge/qt/qt_runtime_qt4.cpp: 15 (JSC::Bindings::convertValueToQVariant): 16 (JSC::Bindings::convertQVariantToValue): 17 1 18 2012-07-24 Benjamin Poulain <bpoulain@apple.com> 2 19 -
trunk/Source/WebCore/bridge/qt/qt_runtime.cpp
r123435 r123505 505 505 msToGregorianDateTime(exec, date->internalNumber(), true, gdt); 506 506 if (hint == QMetaType::QDateTime) { 507 ret = QDateTime(QDate(gdt.year() + 1900, gdt.month() + 1, gdt.monthDay()), QTime(gdt.hour(), gdt.minute(), gdt.second()), Qt::UTC);507 ret = QDateTime(QDate(gdt.year(), gdt.month() + 1, gdt.monthDay()), QTime(gdt.hour(), gdt.minute(), gdt.second()), Qt::UTC); 508 508 dist = 0; 509 509 } else if (hint == QMetaType::QDate) { 510 ret = QDate(gdt.year() + 1900, gdt.month() + 1, gdt.monthDay());510 ret = QDate(gdt.year(), gdt.month() + 1, gdt.monthDay()); 511 511 dist = 1; 512 512 } else { … … 519 519 msToGregorianDateTime(exec, b, true, gdt); 520 520 if (hint == QMetaType::QDateTime) { 521 ret = QDateTime(QDate(gdt.year() + 1900, gdt.month() + 1, gdt.monthDay()), QTime(gdt.hour(), gdt.minute(), gdt.second()), Qt::UTC);521 ret = QDateTime(QDate(gdt.year(), gdt.month() + 1, gdt.monthDay()), QTime(gdt.hour(), gdt.minute(), gdt.second()), Qt::UTC); 522 522 dist = 6; 523 523 } else if (hint == QMetaType::QDate) { 524 ret = QDate(gdt.year() + 1900, gdt.month() + 1, gdt.monthDay());524 ret = QDate(gdt.year(), gdt.month() + 1, gdt.monthDay()); 525 525 dist = 8; 526 526 } else { … … 875 875 // Dates specified this way are in local time (we convert DateTimes above) 876 876 GregorianDateTime dt; 877 dt.setYear(date.year() - 1900);877 dt.setYear(date.year()); 878 878 dt.setMonth(date.month() - 1); 879 879 dt.setMonthDay(date.day()); -
trunk/Source/WebCore/bridge/qt/qt_runtime_qt4.cpp
r123435 r123505 505 505 msToGregorianDateTime(exec, date->internalNumber(), true, gdt); 506 506 if (hint == QMetaType::QDateTime) { 507 ret = QDateTime(QDate(gdt.year() + 1900, gdt.month() + 1, gdt.monthDay()), QTime(gdt.hour(), gdt.minute(), gdt.second()), Qt::UTC);507 ret = QDateTime(QDate(gdt.year(), gdt.month() + 1, gdt.monthDay()), QTime(gdt.hour(), gdt.minute(), gdt.second()), Qt::UTC); 508 508 dist = 0; 509 509 } else if (hint == QMetaType::QDate) { 510 ret = QDate(gdt.year() + 1900, gdt.month() + 1, gdt.monthDay());510 ret = QDate(gdt.year(), gdt.month() + 1, gdt.monthDay()); 511 511 dist = 1; 512 512 } else { … … 519 519 msToGregorianDateTime(exec, b, true, gdt); 520 520 if (hint == QMetaType::QDateTime) { 521 ret = QDateTime(QDate(gdt.year() + 1900, gdt.month() + 1, gdt.monthDay()), QTime(gdt.hour(), gdt.minute(), gdt.second()), Qt::UTC);521 ret = QDateTime(QDate(gdt.year(), gdt.month() + 1, gdt.monthDay()), QTime(gdt.hour(), gdt.minute(), gdt.second()), Qt::UTC); 522 522 dist = 6; 523 523 } else if (hint == QMetaType::QDate) { 524 ret = QDate(gdt.year() + 1900, gdt.month() + 1, gdt.monthDay());524 ret = QDate(gdt.year(), gdt.month() + 1, gdt.monthDay()); 525 525 dist = 8; 526 526 } else { … … 875 875 // Dates specified this way are in local time (we convert DateTimes above) 876 876 GregorianDateTime dt; 877 dt.setYear(date.year() - 1900);877 dt.setYear(date.year()); 878 878 dt.setMonth(date.month() - 1); 879 879 dt.setMonthDay(date.day());
Note: See TracChangeset
for help on using the changeset viewer.