예제 #1
0
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;
}
예제 #2
0
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);
}
예제 #3
0
double MonthInputType::valueAsDate() const
{
    DateComponents date;
    if (!parseToDateComponents(element()->value(), &date))
        return DateComponents::invalidMilliseconds();
    double msec = date.millisecondsSinceEpoch();
    ASSERT(std::isfinite(msec));
    return msec;
}
예제 #4
0
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);
}
예제 #5
0
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);
}
예제 #6
0
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);
}