3

短い質問、別名「TD;DR」。

たとえば、「1464478647000」という文字列がありますが、これは UNIX タイムスタンプだと思います。しかし、確かにそれは時間を表す数字を含む文字列ですが、人間が読める形式ではありませんtime_tC ++ 11の「3分前」のように、後でフォーマットされた文字列にフォーマットできるように、それを型に変換するにはどうすればよいですか?


長い質問です。

まず第一に、私の悪い英語で申し訳ありません。

私は C++11 はもちろん、C++ についても全くの初心者です。C を少し学んだだけで、それは 10 年前のことで、当時のことをほとんど忘れていました。暇なときに、Feednix (C++11 で書かれた ncurses プログラムで、Linux コンソールの Feedly クライアントとして機能し、死んでいるように見えます) を少しフォークしようとしています。リスト ( ncmpcppmuttのようなもの)。現在のFeednixの実装では投稿の時間が表示されないため、公開された時間を表示するようにするとよいと思いました (Feedly の Web バージョンのように、「タイトルのみ」の表示で)。

問題は、 Feednixで実装されているもののモデルに従って、「公開された」データを文字列オブジェクトとしてプルしていることです (整数として、またはtime_tオブジェクトとして直接プルする方法がわかりませんでした (Json ライブラリのようです) 「公開された」データは、Feedly API docs によると、「RSS フィードによって報告された、この記事が公開されたときのミリ秒単位のタイムスタンプです (不正確な場合が多い)。」その例「1452614967000」です。

では、その文字列をオブジェクトに変換するにはどうすればよいtime_tので、後で「3 分前」や「2 日前」などの文字列にフォーマットできますか? または、そのフォーマットされた文字列を取得するためにできることはありますか (可能性が高い)? どんな助けでも大歓迎です!

4

1 に答える 1

3

longまず、数値をusingに変換してから、次のstrtolようにキャストしtime_tます。

#include <cstdlib>
#include <ctime>

using namespace std; // to simplify answer

...
const char* timestr = "1464478647000";
time_t timenum = (time_t) strtol(timestr, NULL, 10); 
于 2016-05-29T00:39:01.803 に答える