C ++ 11でミリ秒の日時を解析するための最良の方法は何ですか

ネズクイック

何のための次善の策だろうstrptime、我々はmillissecondsと日時文字列を持っている場合?

与えられた:

"30/03/09 16:31:32.121"

ミリ秒をstruct tm保存しないため、通常のstrptimeを使用できませんこれを達成できる新しいクラスはありますか?

ハワード・ヒナント

これらのフィールドを手動で解析し(intに読み取り、秒を2倍にします)、days_from_civilを使用して年/月/日をchrono::system_clock::time_pointに変換します

std::chrono::system_clock::time_point t(days(days_from_civil(y, m, d)));

ここdaysで:

using days = std::chrono::duration<int, std::ratio<86400>>;

次に、それに時間、分、秒を追加できます。分数秒を処理するには、少し踊る必要があります。

double s;
your_stream >> s;  // 32.121
using namespace std::chrono;
duration<double> dsecs(s);
seconds sec = duration_cast<seconds>(dsecs);
milliseconds ms = duration_cast<milliseconds>(dsecs - sec);
t += sec + ms;

必要に応じて、roundここからミリ秒変換に使用します

milliseconds ms = round<milliseconds>(dsecs - sec);

duration_castゼロに向かって切り捨てられます。このリンクには、他の丸めモードがあります:床、円形、天井

簡単に再利用できるように、すべてをきちんとした機能でまとめます。:-)

上記のコードはすべてUTCを想定しています。解析している日付/時刻がUTCからオフセットされていることがわかっている場合は、そのオフセットを加算/減算できます。system_clock追跡Unix時間のすべての既知の実装。これは、UTCタイムゾーンでの1970-01-01からの秒数です。

更新

この回答を書いて以来、私はOPが当時求めていたと思われるより一般的なライブラリ開発しました。さまざまなサブセカンド精度を直接次のstd::chrono::system_clock::time_pointように解析できます

#include "date/date.h"
#include <iostream>
#include <sstream>

int
main()
{
    std::istringstream in{"30/03/09 16:31:32.121\n"
                          "30/03/09 16:31:32.1214"};
    std::chrono::system_clock::time_point tp;
    in >> date::parse("%d/%m/%y %T", tp);
    using namespace date;
    std::cout << tp << '\n';
    in >> date::parse(" %d/%m/%y %T", tp);
    std::cout << tp << '\n';
}

この出力:

2009-03-30 16:31:32.121000
2009-03-30 16:31:32.121400

このライブラリは、最初に説明したものと同じ手法とツールを使用しますが、パッケージ化されており、単一のヘッダーライブラリとしてすぐに使用できます。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

C#では、リスト内の連続する日付をグループ化するための最良の方法は何ですか?

分類Dev

Cで日付なしの時間(時間と秒)を比較する最良の方法は?

分類Dev

C#でSQLServerに動的な数の行を挿入するための最良の方法は何ですか

分類Dev

cでこの構造体を設計するための最良の方法は何ですか?

分類Dev

C ++で実験を行うときに、いくつかの関数のCPU時間を測定するための最良の方法は何ですか?

分類Dev

C ++では、単一のクラスを動的に割り当てるための最良の方法は何ですか?

分類Dev

Objective-Cの名前空間の衝突を解決するための最良の方法は何ですか?

分類Dev

asp .Net c#のdatatableから.xlsを作成するための最良の方法は何ですか?

分類Dev

C#では、このWIKIマークアップを解析するための最良の方法は何ですか?

分類Dev

Objective-Cで定数を作成するための最良の方法は何ですか

分類Dev

Cで2次元配列を作成するための最良の方法は何ですか

分類Dev

C#でPHPとMySQLを操作するための最良の方法は何ですか

分類Dev

C:文字列を連結するための最良かつ最速の方法は何ですか

分類Dev

C ++でHashMapを使用する最良の方法は何ですか?

分類Dev

c ++ 11で日中のHH:MM:SSを表す最良の方法は何ですか

分類Dev

Objective-Cコードをユニットテストするための最良の方法は何ですか?

分類Dev

C#でリスト内の3つのアイテムを無限にローテーションするための最良の方法は何ですか

分類Dev

java / c ++ / c / actionscript-3アプリケーションで静的変数を操作するための最良の方法は何ですか?

分類Dev

C#-オブジェクトのリストをファイルにシリアル化するための最良の方法は何ですか?

分類Dev

C ++の関数からベクトルを返すための最良の方法は何ですか

分類Dev

C#で日付文字列を検証するための最良の方法

分類Dev

C ++ 11で複数の条件変数を待機する最良の方法は何ですか?

分類Dev

JavaからC ++に情報を渡すための最良の方法は何ですか?

分類Dev

SQL Server、C#およびiTextSharp。PDFに参加するための最良の方法は何ですか

分類Dev

C ++では、ライブラリ間で同様のクラスの変換を行うための最良の方法は何ですか?

分類Dev

C#でshort []配列の数値からコンマ区切りの文字列を作成するための最良の方法は何ですか?

分類Dev

LinuxでCからミリ秒とナノ秒の精度の時間差を出力する方法は?

分類Dev

cでBSTを検証するための最良の方法

分類Dev

Cの構造体を破壊する最良の方法は何ですか

Related 関連記事

  1. 1

    C#では、リスト内の連続する日付をグループ化するための最良の方法は何ですか?

  2. 2

    Cで日付なしの時間(時間と秒)を比較する最良の方法は?

  3. 3

    C#でSQLServerに動的な数の行を挿入するための最良の方法は何ですか

  4. 4

    cでこの構造体を設計するための最良の方法は何ですか?

  5. 5

    C ++で実験を行うときに、いくつかの関数のCPU時間を測定するための最良の方法は何ですか?

  6. 6

    C ++では、単一のクラスを動的に割り当てるための最良の方法は何ですか?

  7. 7

    Objective-Cの名前空間の衝突を解決するための最良の方法は何ですか?

  8. 8

    asp .Net c#のdatatableから.xlsを作成するための最良の方法は何ですか?

  9. 9

    C#では、このWIKIマークアップを解析するための最良の方法は何ですか?

  10. 10

    Objective-Cで定数を作成するための最良の方法は何ですか

  11. 11

    Cで2次元配列を作成するための最良の方法は何ですか

  12. 12

    C#でPHPとMySQLを操作するための最良の方法は何ですか

  13. 13

    C:文字列を連結するための最良かつ最速の方法は何ですか

  14. 14

    C ++でHashMapを使用する最良の方法は何ですか?

  15. 15

    c ++ 11で日中のHH:MM:SSを表す最良の方法は何ですか

  16. 16

    Objective-Cコードをユニットテストするための最良の方法は何ですか?

  17. 17

    C#でリスト内の3つのアイテムを無限にローテーションするための最良の方法は何ですか

  18. 18

    java / c ++ / c / actionscript-3アプリケーションで静的変数を操作するための最良の方法は何ですか?

  19. 19

    C#-オブジェクトのリストをファイルにシリアル化するための最良の方法は何ですか?

  20. 20

    C ++の関数からベクトルを返すための最良の方法は何ですか

  21. 21

    C#で日付文字列を検証するための最良の方法

  22. 22

    C ++ 11で複数の条件変数を待機する最良の方法は何ですか?

  23. 23

    JavaからC ++に情報を渡すための最良の方法は何ですか?

  24. 24

    SQL Server、C#およびiTextSharp。PDFに参加するための最良の方法は何ですか

  25. 25

    C ++では、ライブラリ間で同様のクラスの変換を行うための最良の方法は何ですか?

  26. 26

    C#でshort []配列の数値からコンマ区切りの文字列を作成するための最良の方法は何ですか?

  27. 27

    LinuxでCからミリ秒とナノ秒の精度の時間差を出力する方法は?

  28. 28

    cでBSTを検証するための最良の方法

  29. 29

    Cの構造体を破壊する最良の方法は何ですか

ホットタグ

アーカイブ