FormControlState DateTimeFieldsState::saveFormControlState() const { FormControlState state; state.append(hasYear() ? String::number(m_year) : emptyString()); state.append(hasMonth() ? String::number(m_month) : emptyString()); state.append(hasDayOfMonth() ? String::number(m_dayOfMonth) : emptyString()); state.append(hasHour() ? String::number(m_hour) : emptyString()); state.append(hasMinute() ? String::number(m_minute) : emptyString()); state.append(hasSecond() ? String::number(m_second) : emptyString()); state.append(hasMillisecond() ? String::number(m_millisecond) : emptyString()); state.append(hasWeekOfYear() ? String::number(m_weekOfYear) : emptyString()); if (hasAMPM()) state.append(m_ampm == AMPMValueAM ? "A" : "P"); else state.append(emptyString()); return state; }
QString DateTime::formatDateTime(const QString &rFormat) const { if (rFormat.isEmpty()) return QString(); if (!isValid()) return QString(); const QLatin1Char null('0'); const QLatin1Char quote('\''); const QString tokens = QLatin1String("\'dMyhHmszAPapw"); const bool am_pm = hasAMPM(rFormat); QString result; QString token; QChar expected = null; QChar c; int i; for (i = 0; i < rFormat.length(); i++) { c = rFormat.at(i); // Handle literal text if (expected == quote) { if (c == quote) { Q_ASSERT_X(i > 0, "DateTime::toString()", "Found quote with status quote at i = 0"); if (i > 0 && rFormat.at(i - 1) == quote) // Second of two quotes result += quote; expected = null; } else // Next literal character result += c; } else if (c == expected) { // Extend token token += c; } else { // Close last token result += formatToken(token, am_pm); token.clear(); expected = null; // Test for valid character if (tokens.indexOf(c) >= 0) { if (c == QLatin1Char('a')) expected = QLatin1Char('p'); else if (c == QLatin1Char('A')) expected = QLatin1Char('P'); else if (c.toLower() == QLatin1Char('p')) expected = null; else expected = c; if (c != quote) token += c; } else result += c; } } result += formatToken(token, am_pm); return result; }
unsigned DateTimeFieldsState::hour23() const { if (!hasHour() || !hasAMPM()) return emptyValue; return (m_hour % 12) + (m_ampm == AMPMValuePM ? 12 : 0); }