「Qtの基礎 - 日時」の版間の差分

ナビゲーションに移動 検索に移動
53行目: 53行目:
ISO 8601は国際標準化機構(ISO)により定められた日付と時刻の表記に関する国際規格であり、主にデータ交換の文脈で利用される。<br>
ISO 8601は国際標準化機構(ISO)により定められた日付と時刻の表記に関する国際規格であり、主にデータ交換の文脈で利用される。<br>
<br>
<br>
==== UTC時間を日本時間に変換 ====
以下の例では、"2024-03-01T16:24:32Z"というUTCの日時 (文字列) を日本時間に変換して、"yyyy年M月d日 H時m分"という形式に変換している。<br>
以下の例では、"2024-03-01T16:24:32Z"というUTCの日時 (文字列) を日本時間に変換して、"yyyy年M月d日 H時m分"という形式に変換している。<br>
  <syntaxhighlight lang="c++">
  <syntaxhighlight lang="c++">
79行目: 80行目:
  std::cout << formattedDateTime.toStdString() << std::endl;
  std::cout << formattedDateTime.toStdString() << std::endl;
  }
  }
</syntaxhighlight>
<br>
==== 文字列を日時に変換 ====
まず、<code>QDateTime::fromString</code>メソッドを使用して文字列を<code>QDateTime</code>クラスのオブジェクトに変換する。<br>
次に、<code>QDateTime::toString</code>メソッドを使用して任意の形式 (カスタムの日付フォーマットも指定可能) に変換する。<br>
<syntaxhighlight lang="c++">
#include <QDateTime>
// ISO 8601形式の日本時間
QString isoDateStr = "2024-03-02T17:17:00+09:00";
QDateTime dateTime = QDateTime::fromString(isoDateStr, Qt::ISODate);
if (!dateTime.isValid()) {
    std::cerr << QString("日付の変換に失敗しました").toStdString() << std::endl;
    return -1;
}
// "yyyy年M月d日 H時m分"形式に変換
// 時間の表記を"M月d日"や"H時m分"とすることにより、0を付加しない日時に変換できる
QString formattedDateStr = dateTime.toString("yyyy年M月d日 H時m分");
std::cout << QString("変換後の日付と時間 : %1").arg(formattedDateStr).toStdString() << std::endl;
  </syntaxhighlight>
  </syntaxhighlight>
<br><br>
<br><br>

案内メニュー