2017-11-29 8 views
1

私は日付の文字列を持っています。私は、関数形式の日付を渡したくない例えば任意の数値形式でそれを解析することができますスタンダールライブラリから関数(例えばタイムスタンプまたはユリウス日)日付である文字列を解析するにはどうすればよいですか?

std::string str("01/01/2017");//Local format date 
UINT64 timestamp = function(str); 

があります。私はローカルフォーマットで表現された文字列だけを知りたい。

+2

の可能性のある重複した[文字列から日付/時刻を解析する方法?](https://stackoverflow.com/questions/3786201/how-to-parse-date-time-from-string) – Melebius

+2

_「関数内でフォーマット日付を渡したくないのです」_関数は、フォーマットがMM/DD/YYYYかDD/MM/YYYYかどうかを_guess_する必要がありますか?私は間違いなくそれに頼っていないだろう。 – Melebius

+0

'_variant_t'はそれを行います – Rikitikitavi

答えて

0

ローカル日付形式を使用する場合は、std::get_time(C++ 11以降)またはstrftimeのC関数"x"をフォーマットとして試してみてください。

| x |ロケールの標準日付表現を解析します。すべて| - あなたがしたい場合localtimeまたはgmtimeのいずれかを使用してタイムスタンプに変換することができますcppreference.com

リターンカレンダー時間struct tm両方。

従来のCロケールではなく、OSの地域設定を使用できるようにするには、アプリケーションのCおよびC++ロケールを設定する必要があります。 localeおよびstd::localeを参照してください。そして、両者を同期させて、悪い驚きを得ないように両方を設定するとよいでしょう。

setlocale(LC_ALL, ""); 
std::locale::global(std::locale(setlocale(LC_ALL, NULL))); 
+0

opはフォーマットを渡したくありません –

+0

はい、私はフォーマットを使いたくありません。私は '_variant_t'のように使いたい。しかし、私はクロスプラットフォームのソリューションが必要です – Rikitikitavi

+1

ロケールには時間的な面があります。フォーマットを取得する方法を調べる必要があります –

関連する問題