double BaseDateAndTimeInputType::parseToDouble(const String& src, double defaultValue) const { DateComponents date; if (!parseToDateComponents(src, &date)) return defaultValue; double msec = date.millisecondsSinceEpoch(); ASSERT(isfinite(msec)); return msec; }
Decimal BaseDateAndTimeInputType::parseToNumber(const String& source, const Decimal& defaultValue) const { DateComponents date; if (!parseToDateComponents(source, &date)) return defaultValue; double msec = date.millisecondsSinceEpoch(); ASSERT(std::isfinite(msec)); return Decimal::fromDouble(msec); }
double MonthInputType::valueAsDate() const { DateComponents date; if (!parseToDateComponents(element()->value(), &date)) return DateComponents::invalidMilliseconds(); double msec = date.millisecondsSinceEpoch(); ASSERT(std::isfinite(msec)); return msec; }
Decimal TimeInputType::defaultValueForStepUp() const { double current = currentTimeMS(); int offset = calculateLocalTimeOffset(current).offset / msPerMinute; current += offset * msPerMinute; DateComponents date; date.setMillisecondsSinceMidnight(current); double milliseconds = date.millisecondsSinceEpoch(); ASSERT(std::isfinite(milliseconds)); return Decimal::fromDouble(milliseconds); }
Decimal TimeInputType::defaultValueForStepUp() const { double current = currentTimeMS(); double utcOffset = calculateUTCOffset(); double dstOffset = calculateDSTOffset(current, utcOffset); int offset = static_cast<int>((utcOffset + dstOffset) / msPerMinute); current += offset * msPerMinute; DateComponents date; date.setMillisecondsSinceMidnight(current); double milliseconds = date.millisecondsSinceEpoch(); ASSERT(std::isfinite(milliseconds)); return Decimal::fromDouble(milliseconds); }
String ICULocale::formatLocalizedDate(const DateComponents& dateComponents) { if (!initializeShortDateFormat()) return String(); double input = dateComponents.millisecondsSinceEpoch(); UErrorCode status = U_ZERO_ERROR; int32_t length = udat_format(m_shortDateFormat, input, 0, 0, 0, &status); if (status != U_BUFFER_OVERFLOW_ERROR) return String(); Vector<UChar> buffer(length); status = U_ZERO_ERROR; udat_format(m_shortDateFormat, input, buffer.data(), length, 0, &status); if (U_FAILURE(status)) return String(); return String::adopt(buffer); }