如果可能的話,我寧願用Qt方法來做這件事。檢查OSX是否在24小時內
目前在我們的代碼中,我們可以區分Windows是24小時制的;但不是在Mac上。
我們有一個方法返回一個字符串,例如:2012/1/9 9:53:42 - 這是給我們一個以前的時間,而不是當前的(這是我們想要的),我沒有想要惹惱這種方法。
我一直在玩弄一種方式來確定當前系統時鐘是否在軍事時間;並調整從字符串返回的前一次時間以反映這一點。我可以在Windows上使用它,但在Mac上 - 無論我們是否使用24小時制,它都會顯示正常的12小時時間。
正確地忽略我的原油調試信息,或者如果我不是特別的問題去 - 我沒能還測試,並在必要時調整:(代碼後說明)
QLocale *ql = new QLocale();
QString qlTF = ql->timeFormat();
QString fileTime = QString::fromUtf8(str.GetSafeStringPtr());
if (qlTF.left(1) == (QString("H"))) // Our system clock is set to military time
{
QString newTime;
QStringList fileTimeDateSplit = fileTime.split(" ");
QStringList fileTimeSplit = fileTimeDateSplit.at(1).split(":");
m_editModified->setText(qlTF);
if (fileTimeSplit.at(0).toInt() < 12 && (fileTimeDateSplit.at(2) == "PM"))
{
int newHour = 12 + (fileTimeSplit.at(0).toInt()%12);
newTime.append(QString::number(newHour));
newTime.append(":");
newTime.append(fileTimeSplit.at(1));
newTime.append(":");
newTime.append(fileTimeSplit.at(2));
m_editModified->setText(QString("military after noon"));
}
}
else m_editModified->setText(qlTF);
基本上我抓住當前機器的區域來檢索系統的時間格式。 fileTime被設置爲一個字符串,如「2012年1月9日上午9:53:42」。 qlTF返回一個格式,例如:HH:mm:ss,H:mm:ss,hh:mm:ss或h:mm:ss - 大寫意思是24小時制。 我用分隔符對不同的字符串進行標記,然後檢查時間是否大於12和PM;然後添加額外的時間併合並新的時間字符串。
你可以看到,我所做的:
m_editModified->setText(qlTF);
進行調試。在Windows上,它將被設置爲HH:mm:ss;但即使在Mac上啓用了24小時制,它仍會返回h:mm:ss - 這完全違背了目的。
任何想法將非常感激!
我有的字符串沒有被報告爲24小時格式;否則我只會使用它並完成它:p。所以我想弄清楚如何找出系統是否在24小時制上;但爲了我的格式化目的,我一定會記住這個建議! – 2012-02-03 02:55:22
你知道字符串的確切格式嗎?在我的例子中,時間使用12小時格式。如果AM更改爲PM,該示例仍然有效。如果您使用當前語言環境格式化您獲得的字符串,那麼您不能使用語言環境的日期時間格式將字符串轉換回QDateTime。 – 2012-02-03 06:22:10
不 - 我不知道OSX上字符串的確切格式,這是原始問題:)當然,我可以檢查它是否說PM,並且能夠更改它 - 但我仍然不知道是什麼類型的格式化系統時鐘打開,*如果*我應該改變它。雖然謝謝! – 2012-02-03 14:02:52