• ベストアンサー

C言語 ミリ秒を日付に変換には

初心者です orz ただいまC言語勉強中です。(仕事で必要になりそう・・・) やりたいことは、タイトルの通り 「C言語 ミリ秒を日付に変換」です。 1298616934703→yyyyMMddhhmmddssSSS ↑こういう感じのことがしたいです! ログにミリ秒で吐き出された時間から日付を求めたいのですが、 やり方が、いまいちわかりません(泣) どなたか参考サイトや変換方法をご教授願えると助かります。

質問者が選んだベストアンサー

  • ベストアンサー
  • mtaka2
  • ベストアンサー率73% (867/1179)
回答No.2

その「ミリ秒で吐き出された時間」という数値が、 単純にエポック秒を1000倍したものだったら、 1000で割った商と余りでに「秒単位の数値(エポック秒)」と「ミリ秒部分」に分けてから、 エポック秒を年月日時分秒に変換するだけでしょう。 ---ここから--- #include <stdio.h> #include <time.h> void conv_time(char *dst, long long t) { time_t clock = t / 1000LL; int millisec = t % 1000LL; struct tm *local = localtime(&clock); sprintf(dst, "%04d%02d%02d%02d%02d%02d%03d", local->tm_year + 1900, local->tm_mon+1, local->tm_mday, local->tm_hour, local->tm_min, local->tm_sec, millisec); } int main(int argc, char *argv[]) { long long t = 1298616934703LL; char s[18]; conv_time(s, t); printf("%lld -> %s\n", t, s); } ---ここまで---

ikechanman
質問者

お礼

ほうっ!! できました! Javaなら簡単にできるんですけど、 Cだとこんなに難しいとは(難しいと思っているのは僕だけ・・・?) 回答ありがとうございました(^q^)/

その他の回答 (2)

  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.3

C標準関数では、time_tは秒単位だったはず。 linuxなら http://archive.linux.or.jp/JM/html/LDP_man-pages/man2/gettimeofday.2.html とか http://archive.linux.or.jp/JM/html/LDP_man-pages/man2/clock_gettime.2.html とかですね。 フォーマットを合せたかったら、printf系で。

ikechanman
質問者

お礼

ちゃんと細かいフォーマット指定もできるんですね~ ありがとうございます、勉強になりました!

  • papapa0427
  • ベストアンサー率25% (371/1472)
回答No.1

過去にこういう質問がありました。過去に同様の質問があったかどうか、確認しましょうね。 http://okwave.jp/qa/q949646.html

ikechanman
質問者

お礼

ありがとうございます! やりたいことができました!

ikechanman
質問者

補足

おわーすみません。。。 参考サイト内で ------------------------ CTime timeNow = CTime::GetCurrentTime(); CString sTime = timeNow.Format("%Y%m%d%H%M%S"); ------------------------ と、あると思うのですが、環境がLinuxのため使えなさそうです。。。 (説明が足りませんでした) それとも、 --------------------------------------- time_t timer; time(&timer);/* 現在の時刻を取得 */ struct tm *local; local =localtime(&timer);/* 地方時の構造体に変換 */ CString time; //CString用の時間 time.Format("%4d%02d%02d%02d%02d%02d" ,local->tm_year + 1900,/* 年 */ local->tm_mon+1,/*月は0から始まるので1を+*/ local->tm_mday,/* 日 */ local->tm_hour,/* 時 */ local->tm_min,/* 分 */ local->tm_sec);/* 秒 */ --------------------------------------- ↑のtimerに取得したミリ秒を格納して、取得する方法ってことだったりします? 見当違いなこと言ってたらすみません orz 回答よろしくお願いいたします。

関連するQ&A

  • squidのログでミリ秒を日付に変換したい

    squidのログは以下のようにとれるわけですが、 1215284529.125 1799 172.16.100.1 TCP_・・・ 一番最初の「1215284529.125」は、ミリ秒で表示された、日付と時間かと思います。 これをExcelで、日付と時刻に変換したいのですが、方法がわかれば教えて頂けませんでしょうか? よろしくお願い致します。

  • LinaxのC言語で100ミリ秒スリープさせたいのですが、どのような方法が良いでしょうか?

    LinaxのC言語で100ミリ秒スリープさせたいのですが、どのような方法が良いでしょうか? よろしくお願いします

  • C言語で秒単位の数値をコンソールタイプから入力して、その値を時分秒に変換して画面に表示したいのですが、、、

    こんばんは、大学1年生です。 授業で、C言語を勉強しているのですが原理などもよく分からず困ってます。 質問なのですが、C秒単位の数値をコンソールタイプから入力して、その値を時分秒に変換して画面に表示したいのですが参考書などを見てもサッパリです。ソースを教えていただくと助かります。ちなみに、与えられた値を時分秒に変換する部分は関数でお願いします。

  • 1秒は何ミリ秒とか、単位変換の問題が苦手です。

    今ITパスポートなどの情報処理技術者試験などの勉強をしているのですが、 1秒は何ミリ秒とか、3,600,000ミリ秒は何時間とかの単位変換の問題が苦手です。 また、4,096バイトは何kバイトとかの単位変換の問題とかも苦手です。 どのようにしたら、早く正確に解くことできるようになるでしょうか? 答え間違っていたり、答えが正解してても時間がかかってしまったりします。 計算方法や早く正確に解く方法など、教えていただけないでしょうか? よろしくお願いします。

  • c言語で取得されるシステム日付について

    AIX上でc言語を使用したプログラムを 作っています。 開発環境が新しいAIXとなりそこでの疎通テストを しています。 テストの都合上、smitにてシステム日付を変更後、 テストを実施したところ動作は問題ないのですが C言語内でログを出す際の時刻が-9時間になっています。 Aix上でdateコマンドをうつと変更した正しい 日付時刻が表示されます。 C言語からだと何故違う日付がでるのでしょうか。 -9時間なのでGmtのことだと思いますがなにを 設定すれば解消さらるのか教えて下さい。 素人ですいません。

  • C#による日付のフォーマット変換について

    初めまして。 大学にてC#を勉強中の身なのですが、文字列の日付フォーマット 【YYYY/MM/DD → DD-MMM-YY】 への変換方法が分からず困っています。 よろしければどなたかご教授して頂けないでしょうか? ※このような形に変換を希望しています string型 【2000/01/01】 → string型 【01-Jan-00】

  • C言語について

    僕はC言語について詳しく勉強したいと思っているのですが 参考書はたくさんあってどれが勉強しやすいのかがよく 分かりません。 わかりやすさには個人差があると思いますがこれなら全くの 初心者の人にもオススメできるといった本があれば是非教えて下さい。 またそのようなHPがあればそちらも教えて下さると嬉しいです。

  • c言語について

    僕はc言語どころか、プログラミングについて何も知らない初心者です。 ですが、こんな僕でもc言語でプログラミングが書けるようになりたいです。 その為にc言語の教科書(明解c言語)だけは買ったのですが、 そのc言語を書くためのアプリ的なものは何を使えばいいのでしょうか。 また、c言語を学ぶ前に「これを習ってなかったら、c言語は出来ないよ!笑」的なものはありますか? (小学校の九九が出来ないのに、中学の因数分解は出来ないよね!みたいなものです) それを学ぶためのオススメの参考書があれば、そちらも教えて欲しいです! また、オススメの勉強法があれば知りたいです! よろしくお願いします。

  • C言語のライブラリ

    C言語の初心者でただいま勉強中です。 今ちょうど、関数のところでライブラリについて 勉強しているのですが ライブラリのソースがどうなっているのか気になっております。 どうにかしてライブラリのソースを見る方法はないでしょうか?

  • ASPを使用してミリ秒単位の時間の取得

    タイトル通りです。 とある関数のオーバーヘッド時間を計測したいです。 ミリ秒単位の時間を取得する方法は無いでしょうか? 言語はASP(VBScript)です。

専門家に質問してみよう