2

UNIX時間のタイムスタンプをintとして返す関数があります。

dd/mm/yyこの int を現地時間の文字列に変換する必要があります。「ローカル」部分が問題を引き起こしています。それがなければ、それを変換する独自の関数を作成できたはずです。

私は周りを検索しctimeましたが、次のような方法で、標準ライブラリのクラスがこれに理想的であるようです:

int unixtime;

std::cout << std::asctime(std::localtime(unixtime));

悲しいことに、のみ*time_tが受け入れられます。int をこの形式に変換する方法、または UNIX 時間から int として現地時間を取得するより良い方法はありますか?

4

5 に答える 5

1

time_t定義により、算術型です。次のことができます。

time_t ts = unixtime;
std::cout << std::asctime(std::localtime(&ts));
于 2014-05-30T09:03:02.923 に答える
0

現在の時刻を dd/mm/yy で表示するには、次のようにします。

#include <iostream>
#include <ctime>

int main(int argc, const char** argv)
{
    char date_buff[40];
    time_t time_value = time(0);
    struct tm* my_tm = localtime(&time_value);
    strftime(date_buff, sizeof(date_buff), "%d/%m/%y\n", my_tm);
    std::cout << date_buff << std::endl;
    return 0;
}
于 2014-05-30T09:08:13.400 に答える
0

の型はtime_tC 仕様では保証されていません。

Unix および POSIX 準拠のシステムtime_tは、Unix エポックの開始からの秒数を表す符号付き整数 (通常は 32 または 64 ビット幅) として型を実装します。したがって、次のことを行うだけです

std::time_t my_time = static_cast<std::time_t>(unixtime);

ただし、時間が であると想定せずint、時間関数を適切な時間処理に置き換えて、std::time_tまたはstruct tm

于 2014-05-30T09:14:11.910 に答える
0

「ctime()、gmtime()、および localtime() 関数はすべて、暦時間を表すデータ型 time_t の引数を取ります。絶対時間値として解釈されると、1970 年 1 月のエポックから経過した秒数を表します。 01 00:00:00 +0000 (UTC)."

ソース:

于 2014-05-30T09:05:45.200 に答える