オンライン健康相談、gooドクター

初心者です orz
ただいまC言語勉強中です。(仕事で必要になりそう・・・)

やりたいことは、タイトルの通り
「C言語 ミリ秒を日付に変換」です。
1298616934703→yyyyMMddhhmmddssSSS
↑こういう感じのことがしたいです!

ログにミリ秒で吐き出された時間から日付を求めたいのですが、
やり方が、いまいちわかりません(泣)

どなたか参考サイトや変換方法をご教授願えると助かります。

gooドクター

A 回答 (3件)

その「ミリ秒で吐き出された時間」という数値が、


単純にエポック秒を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);
}
---ここまで---
    • good
    • 1
この回答へのお礼

ほうっ!!
できました!

Javaなら簡単にできるんですけど、
Cだとこんなに難しいとは(難しいと思っているのは僕だけ・・・?)

回答ありがとうございました(^q^)/

お礼日時:2011/02/25 20:28

C標準関数では、time_tは秒単位だったはず。



linuxなら
http://archive.linux.or.jp/JM/html/LDP_man-pages …
とか
http://archive.linux.or.jp/JM/html/LDP_man-pages …
とかですね。

フォーマットを合せたかったら、printf系で。
    • good
    • 0
この回答へのお礼

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

お礼日時:2011/02/25 20:32

過去にこういう質問がありました。

過去に同様の質問があったかどうか、確認しましょうね。

http://oshiete.goo.ne.jp/qa/949646.html

この回答への補足

おわーすみません。。。

参考サイト内で
------------------------
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
回答よろしくお願いいたします。

補足日時:2011/02/25 18:29
    • good
    • 0
この回答へのお礼

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

お礼日時:2011/02/25 20:26

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

gooドクター

このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング