Overview
date_time クラスには,与えられた書式にしたがって文字列を解析するメソッド from_string(),および与えられた書式にしたがって時刻を出力するメソッド to_string<CharT>() が定義されています.to_string<CharT>() の CharT には char,または wchar_t を指定します.これらのメソッドはそれぞれ strptime(),strftime() 関数を用いて実現しています. ただし,Windows の場合は strptime() が存在しないため,機能を制限して独自に実装しています. 主な書式は以下の通りです.
*1 from_string() メソッドを Windows で使用する場合は指定できません.
- %a
- 現在のロケールにおける曜日の省略名.
- %A
- 現在のロケールにおける曜日の完全な名前.
- %b
- 現在のロケールにおける月の省略名.
- %B
- 現在のロケールにおける月の完全な名前.
- %c *1
- 現在のロケールにおいて一般的な日付・時刻の表記.
- %d
- 月内通算日(10 進数表記).
- %e
- %dと同様に月内通算日を 10 進数で表現するが,1 桁の場合 10 の位にゼロを置かずスペースを置く.
- %F
- %Y-%m-%d と等価.
- %H
- 24 時間表記での時.
- %I *1
- 12 時間表記での時.
- %j
- 年の初めから通算の日数.
- %k
- 24 時間表記での時.1 桁の場合には前にゼロでなくスペースが置かれる.
- %l *1
- 12 時間表記での時.1 桁の場合には前にゼロでなくスペースが置かれる.
- %m
- 月.
- %M
- 分.
- %p *1
- 現在のロケールにおける“午前”,“午後”に相当する文字列.
- %S
- 秒.
- %T
- 24 時間表記の時間(%H:%M:%S).
- %u
- 週の何番目の日か.月曜日を 1 とする (1--7).
- %U *1
- 年の初めからの通算の週数.その年の最初の日曜日を第 1 週の始まりとして計算する.
- %w
- 週の何番目の日か.日曜日を 0 とする (0--6).
- %W *1
- 年の初めからの通算の週数.その年の最初の月曜日を第 1 週の始まりとして計算する.
- %x *1
- 現在のロケールで一般的な日付表記.時刻は含まない.
- %X *1
- 現在のロケールで一般的な時刻表記.日付は含まない.
- %y
- 西暦の下 2 桁.
- %Y
- 世紀部分を含めた 4 桁の西暦年.
Example
#include <iostream> #include <string> #include "clx/date_time.h" int main(int argc, char* argv[]) { std::string str = "Sat 17 Mar 2007 19:56:19 JST"; std::string infmt = "%a %d %b %Y %H:%M:%S JST"; std::cout << "Input string: " << str << std::endl; std::cout << "Input format: " << infmt << std::endl; std::cout << std::endl; // 文字列strをinfmtにしたがって解析する. clx::date_time input; input.from_string(str, infmt); // 時刻をoutfmtのフォーマットで出力する. std::string outfmt = "%x %X"; std::cout << "Output format: " << outfmt << std::endl; std::cout << "Result: " << input.to_string<char>(outfmt) << std::endl; return 0; }
Result Input string: Sat 17 Mar 2007 19:56:19 JST Input format: %a %d %b %Y %H:%M:%S JST Output format: %x %X Result: 03/17/07 19:56:19