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;
}
Пример #2
0
	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);
}