ようこそ ゲスト さん、新規登録(無料)して気になる疑問を解決しませんか?

質問

質問者:arlstumia ユニックス時間(秒)を普通の日付時間(時:分:秒)に直すにはどうすればいいでしょうか。
困り度:
  • 困っています
こんにちわ。質問させて頂きます。

C言語で、pcap.hによってキャプチャされたパケットのタイムスタンプ(秒)を、標準時間と申しますか、時:分:秒に直したいと考えています。

時間変換の関数で、ctime,asctime,localtime等があるのは分かっているので、localtime関数を使おうと思っているのですが、使ってみたところポインタのタイプが違うのでエラーが出てしまいます。

具体的には、
方法(1):time_t変数に代入してやってみる
struct tm *t_st;
time_t timer;
timer = header->ts;
t_st = localtime (&timer);
方法(2):localtime関数に直接放り込む
t_st = localtime (&header->ts);

等を試してみたのですが当然アウトでした。

パケットヘッダの中の時間を表すheader->tsをどうにかlocaltime関数で使いたいと考えています。

これを解決する良い方法はあるでしょうか。
ご存知であればご教授いただけないでしょうか。どうぞよろしくお願いします。
質問投稿日時:08/11/26 04:59
質問番号:4507877
この質問に対する回答は締め切られました。
最新から表示回答順に表示良回答のみ表示

回答

良回答10pt

回答者:eroermine time_t timer;
timer = header->ts;
t_st = localtime (&timer);
これでok
t_st->tm_mday
に日付が入ってます

駄目だったとしたらこの部分か
timer = header->ts;
パケットから持ってきたままだと ASCIIの可能性も
種類:回答
どんな人:専門家
自信:参考意見
回答日時:08/11/26 14:14
回答番号:No.2
この回答へのお礼ご回答有難う御座いました。
timer = header->ts.t_sec
とすると嘘のようにすんなり行くことが出来ました。

回答

 

回答者:D-Matsu こういう質問をする場合、headerの型がなんであるかを示してください。
今回はどうやらstruct pcap_pkthdrらしいという推測はつきますが。

で、header->tsの型はstruct timevalでlocaltimeが引数に要求するのはconst time_t *なので当然このままでは入れられません。
struct timevalの定義を見ればどうすればいいかの答えはわかるはずです。
種類:アドバイス
どんな人:一般人
自信:参考意見
回答日時:08/11/26 08:21
回答番号:No.1
この回答へのお礼この回答にお礼をつける(質問者のみ)
最新から表示回答順に表示良回答のみ表示