2009-07-07 20 views
4

この種類の質問は以前に尋ねられている必要がありますが、このサイトを検索して何かを見つけることができなかったはずです。私が似たような質問をしなかったなら、事前に私の謝罪。C++での日付操作

  1. C++には日付の操作だけがありますか? 私はSYSTEMTIME構造体を認識しています(GetSystemTimeを実行したときに返される構造体です)が、操作関数は含まれていないようです。たとえば、「2010年7月の第2火曜日の日を私に教えてください」ということができるものを探しています。また、SYSTEMTIME構造体にシステムクロックから供給されていない時間をフィットさせるのは間違っているようです。

  2. 日付を検証するライブラリルーチンはありますか?私は基本的な "チェックデイは1と28の間です"とは考えていません。ルーチンは、例えば、29-02-2009が存在しないと言うことができなければならない。

ありがとうございます。

答えて

8

Boost::DateTimeをチェックしてください。

しかし、C++

+0

[chrono :: date](http://home.roadrunner.com/~hinnant/bloomington/date.html)です。 – bames53

2

SYSTEMTIME構造とGetSystemTime()関数でそのように「取扱」は、日付時刻がWindows API関数ではないと本当にコア言語や標準ライブラリの一部ではないさあなたの質問に答えるために。私はこれがちょっと好きではないことを知っていますが、これはWindows上にいない人がこれを読んでいれば後でいくつかの恥ずかしさを減らすかもしれません。

私は確かに、Chrisが作ったBoost :: DateTimeライブラリの推奨を2番目に挙げています。これは、標準のC++を書いておきたい場合は、実際には、古いCの日付と時刻関数を持っているだけです。これもctimeにあります。しかし、あなたが何か理由でブーストを使用できない店に本当に立ち往生しない限り、私はBoost :: DateTimeに行きます。

+0

ライブラリには、時間を処理するための100万と5つの(よく似た)ボルトがあり、Boost :: DateTimeは私が推奨するものです。 ctimeは、厳密にはUNIXのことですが、もちろんCではありません。 –

+0

ライブラリの数について私は同意し、私は少し明確にするために私の答えを修正しました。はい、ctimeはUnixの時間関数に基づいていますが、C++標準の一部でもあります。 –