2012-04-17 1 views
1

Qt 4.8 사용 DD HH SS 형식으로 시간을 인쇄하려면 어떻게해야합니까? 나는 초가 있고 그 형식의 문자열을 되찾고 싶습니다.Qt 초까지 DD HH SS

답변

6
QDateTime::fromTime_t(seconds).toString("ss hh DD"); 

http://qt-project.org/doc/qt-5.0/qdatetime.html#toString를 참조하십시오

QString seconds_to_DHMS(quint32 duration) 
{ 
    QString res; 
    int seconds = (int) (duration % 60); 
    duration /= 60; 
    int minutes = (int) (duration % 60); 
    duration /= 60; 
    int hours = (int) (duration % 24); 
    int days = (int) (duration/24); 
    if((hours == 0)&&(days == 0)) 
     return res.sprintf("%02d:%02d", minutes, seconds); 
    if (days == 0) 
     return res.sprintf("%02d:%02d:%02d", hours, minutes, seconds); 
    return res.sprintf("%dd%02d:%02d:%02d", days, hours, minutes, seconds); 
} 
+0

yes 서버 가동 시간 (지속 시간)을 초 단위에서 확인하고 싶습니다. – Stefano

+1

'seconds_to_DHMS' 대신'toUTC()'자체를 사용할 수 있습니다 :'QDateTime :: fromTime_t (seconds) .toUTC(). toString ("ss hh DD");' – Nawaz

+0

QDateTime :: fromTime_t()'은 Qt5에서 더 이상 사용되지 않으므로 사용하지 않는 것이 좋습니다. http://doc.qt.io/qt-5/qdatetime-obsolete.html – RAM

0

당신은 사용할 수 있습니다 QDateTime::fromTime_t : 00 :

은 날짜와 시간 1970-01-01T00 이후 경과 한 시간 (초)입니다 날짜 시간 반환 00, 국제 표준시를 (Qt는 :: UTC) . 당신이 기간 (귀하의 질문에 정말 불분명) 같은 것을 시도하려는 경우

+0

나는이 날짜 이후로 초가 없기 때문에 이것이 필요하지 않다고 생각합니다. 서버 가동 시간입니다 – Stefano

0

은 무엇 인쇄 할 것은 시간의 기간입니다 .. 시계 시간에는 "순간"이 아닙니다. QDateTime은 secsTo (및 daysTo) 컴퓨팅을 제외하고는 지속 시간이 그다지 길지 않으므로 직접 인쇄를해야합니다.

좋은 소식은 수학은 어렵지 않다입니다 :

Convert seconds to Days, Minutes and Seconds

// 같은 단어의 국제화가 방해가 될 수도 있지만. :

0

일은 24 시간이 아니며 일반적으로 24 시간이지만 때로는 23 또는 25 (일광 절약 시간이 변경됨) 또는 24 시간 및 두 번째 또는 2 (윤년 초)입니다. (다른 크기의 달이 일반적이기 때문에) 분명히 일 (윤년)이기 때문에 며칠 (주)으로 정의하여 하루의 문제를 상속하는 모든 것.

1

서버 가동 시간이 초이므로, 당신은 QDateTime 클래스를 사용할 수 있습니다.

QDateTime::fromTime_t(duration).toUTC().toString("dd hh ss"); 

을 주목 toUTC, 즉 시작을 설정이다 날짜, 시간 및 초 만 사용하므로 연도가 표시되지 않으므로 해당 날짜 이후의 초가 아닌지 여부는 중요하지 않습니다.

+0

toUTC()가 중요한 단계입니다! – sonichy

관련 문제