2009-03-31 10 views
5

ここで初心者の質問;私は事前に謝罪します。time.hを使用してCで現在の時間を取得する

デーモンがC言語で書かれていると仮定して、5分ごとに起動し、入力キューに何か処理があった場合は何らかの処理を行い、スリープ状態に戻ります。さて、特定の(設定可能な)時間の後、例えば午後2時(真夜中前)にしか処理しない処理があるとします。

Cでは、現時点の時刻をint変数に変換することで、簡単にチェックすることができます。実際には今日の午後2時以降になっているかどうかを判断するにはどうすればよいでしょうか?

+0

私はこの機能を自分で実装したいと思っている理由があると思いますが、その場合は基本的にcronのことを指摘したいと思います。あなたのアプリは単にcronによって起動されますか? (またはWindows上のスケジュールされたタスク) – rmeador

+0

デーモンには、起床するたびに行う必要がある処理があり、午後2時以降に行う特別な処理があります。そうでなければ、私は間違いなくcronが最良の解決策であることに同意するでしょう。 –

答えて

17

localtime。これはlocaltime()は静的記憶域へのポインタを返すという事実に依存http://linux.die.net/man/3/localtime

struct tm *tm_struct = localtime(time(NULL)); 

int hour = tm_struct->tm_hour; 
+3

time_t rawtime; 時刻(&rawtime); struct tm * tm_struct = localtime(&rawtime);私のために働いていた – Belovoj

7
printf("the hour is %d\n", localtime(time(NULL))->tm_hour); 

を参照してください。

7

localtime(time(NULL))コールは機能しません。 time()の戻り値はtime_tで、localtimeの最初の引数はtime_t*です。受け入れられた答えも、printfのものも正しいものではありません。

+0

私は最初の答えを受け入れた理由は、それが私のために働いていた理由を思い出すようです。プラットフォームに依存する可能性がありますか?コードを見てから5年経って、別の会社になったので、私は本当に覚えていません。 –

関連する問題