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 MonthInputType::parseToNumber(const String& src, const Decimal& defaultValue) const { DateComponents date; if (!parseToDateComponents(src, &date)) return defaultValue; double months = date.monthsSinceEpoch(); ASSERT(std::isfinite(months)); return Decimal::fromDouble(months); }
String DateTimeLocalInputType::localizeValue(const String& proposedValue) const { DateComponents date; if (!parseToDateComponents(proposedValue, &date)) return proposedValue; Locale::FormatType formatType = shouldHaveSecondField(date) ? Locale::FormatTypeMedium : Locale::FormatTypeShort; String localized = element().locale().formatDateTime(date, formatType); return localized.isEmpty() ? proposedValue : localized; }
void BaseMultipleFieldsDateAndTimeInputType::updateInnerTextValue() { if (!m_dateTimeEditElement) return; DateTimeEditElement::LayoutParameters layoutParameters(element()->locale(), createStepRange(AnyIsDefaultStep)); DateComponents date; const bool hasValue = parseToDateComponents(element()->value(), &date); if (!hasValue) setMillisecondToDateComponents(layoutParameters.stepRange.minimum().toDouble(), &date); setupLayoutParameters(layoutParameters, date); if (hasValue) m_dateTimeEditElement->setValueAsDate(layoutParameters, date); else m_dateTimeEditElement->setEmptyValue(layoutParameters, date); }
void BaseMultipleFieldsDateAndTimeInputType::updateInnerTextValue() { if (!m_dateTimeEditElement) return; DateTimeEditElement::LayoutParameters layoutParameters(element()->locale(), createStepRange(AnyIsDefaultStep)); DateComponents date; const bool hasValue = parseToDateComponents(element()->value(), &date); if (!hasValue) setMillisecondToDateComponents(layoutParameters.stepRange.minimum().toDouble(), &date); setupLayoutParameters(layoutParameters, date); const AtomicString pattern = m_dateTimeEditElement->fastGetAttribute(HTMLNames::patternAttr); if (!pattern.isEmpty()) layoutParameters.dateTimeFormat = pattern; if (hasValue) m_dateTimeEditElement->setValueAsDate(layoutParameters, date); else m_dateTimeEditElement->setEmptyValue(layoutParameters, date); }
void BaseMultipleFieldsDateAndTimeInputType::updateInnerTextValue() { if (!m_dateTimeEditElement) return; AtomicString direction = element()->locale().isRTL() ? AtomicString("rtl", AtomicString::ConstructFromLiteral) : AtomicString("ltr", AtomicString::ConstructFromLiteral); if (Element* container = firstElementChild(element()->userAgentShadowRoot())) container->setAttribute(HTMLNames::dirAttr, direction); DateTimeEditElement::LayoutParameters layoutParameters(element()->locale(), createStepRange(AnyIsDefaultStep)); DateComponents date; const bool hasValue = parseToDateComponents(element()->value(), &date); if (!hasValue) setMillisecondToDateComponents(layoutParameters.stepRange.minimum().toDouble(), &date); setupLayoutParameters(layoutParameters, date); if (hasValue) m_dateTimeEditElement->setValueAsDate(layoutParameters, date); else m_dateTimeEditElement->setEmptyValue(layoutParameters, date); }