2012-02-02 93 views
1

如果可能的話,我寧願用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 - 這完全違背了目的。

任何想法將非常感激!

回答

0

爲什麼你不只是將你有的字符串(「2012年1月9日9:53:42 AM」)轉換爲QDateTime,然後將該QDateTime轉換回你想要的格式的字符串(我使用ISODate例如):

QString timeFormat = "M/d/yyyy h:m:s AP"; 
QDateTime dt = QDateTime::fromString("1/9/2012 9:53:42 AM", timeFormat); 

QString text = ""; 
if (dt.isValid()) 
    text = dt.toString(Qt::ISODate); 
+0

我有的字符串沒有被報告爲24小時格式;否則我只會使用它並完成它:p。所以我想弄清楚如何找出系統是否在24小時制上;但爲了我的格式化目的,我一定會記住這個建議! – 2012-02-03 02:55:22

+0

你知道字符串的確切格式嗎?在我的例子中,時間使用12小時格式。如果AM更改爲PM,該示例仍然有效。如果您使用當前語言環境格式化您獲得的字符串,那麼您不能使用語言環境的日期時間格式將字符串轉換回QDateTime。 – 2012-02-03 06:22:10

+0

不 - 我不知道OSX上字符串的確切格式,這是原始問題:)當然,我可以檢查它是否說PM,並且能夠更改它 - 但我仍然不知道是什麼類型的格式化系統時鐘打開,*如果*我應該改變它。雖然謝謝! – 2012-02-03 14:02:52

相關問題