CLX C++ Libraries - date_time - string conversion
Author: clown

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