CLX C++ Libraries
Home >> date_time >> string conversion

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

example_ioftime.cpp

#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

Related Page

  1. CLX C++ Libraries - date_time

References

  1. Manpage of STRPTIME
  2. Manpage of STRFTIME