【掲示板ご利用上の注意】

 ※題名は具体的に!
 ※学校の課題の丸投げ禁止!
 ※ソースの添付は「HTML変換ツール」で字下げ!
 ※返信の引用は最小限に!
 ※環境(OSとコンパイラ)や症状は具体的に詳しく!
 ※返信付き投稿の削除は禁止!
 ※マルチポスト(多重投稿)は慎んで!

 詳しくはこちら


本当はこんなに大きく書きたくはないのですが、なかなか守っていただけなくて…。
 守ってくださいね。お願いします。(by管理人)

C言語ソース⇒HTML形式ツール掲示板2こちら


管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    ログ    タグ一覧

No.21927

カレンダー時刻
投稿者---黒ぺけじぇー(2005/07/15 10:48:37)


カレンダー時刻で1970年1月1日0時0分0秒から指定(XXXX年X月X日X時X分X秒)した日付までの経過秒数をだす方法(指定の仕方)がわかりません。

どなたか教えてください。


この投稿にコメントする

削除パスワード

発言に関する情報 題名 投稿番号 投稿者名 投稿日時
<子記事> Re:カレンダー時刻 21928 Blue 2005/07/15 11:00:44


No.21928

Re:カレンダー時刻
投稿者---Blue(2005/07/15 11:00:44)


struct tmに各情報を設定し、mktimeでtime_t型の数値を取得すれば終わり
http://www9.plala.or.jp/sgwr-t/lib/mktime.html



この投稿にコメントする

削除パスワード

No.21929

Re:カレンダー時刻
投稿者---YuO(2005/07/15 11:25:58)


>struct tmに各情報を設定し、mktimeでtime_t型の数値を取得すれば終わり

time_t型の数値を取得しても何にもならないかと。
1970年1月1日0時0分0秒の値をもつtime_t型の数値を取得して,
difftimeする必要があります。
# time_tが19700101T000000Zからの秒数だ,というのは単なる実装詳細でしかない。



この投稿にコメントする

削除パスワード

No.21930

Re:カレンダー時刻
投稿者---Blue(2005/07/15 11:35:14)


> # time_tが19700101T000000Zからの秒数だ,というのは単なる実装詳細でしかない。
time_tは19700101T000000Zからだと思い込んでいました。

> difftimeする必要があります。
ご指摘どおりdifftimeでやらなければいけませんでした。



この投稿にコメントする

削除パスワード

No.21931

Re:カレンダー時刻
投稿者---黒ぺけじぇー(2005/07/15 12:49:40)


うまくいきました。
ありがとうございました。


この投稿にコメントする

削除パスワード

No.21938

Re:カレンダー時刻
投稿者---黒ぺけじぇー(2005/07/15 17:52:56)


お昼にはうまくいったカレンダー時刻ですが
cygwinでもやってみたところうまくいきません。

お昼にはVisual C++ 6使ってて上手くいってました。

載せていただいたページのサンプルもcygwinだとうまくいきません。
(戻値-1になってしまいます)

#include <stdio.h>
#include <time.h>

int main(void)
{
   time_t timer;
   struct tm t;
   struct tm *t_st;

   t.tm_year = 101;     /* 2001年 */
   t.tm_mon  = 4;       /* 5月    */
   t.tm_mday = 20;      /* 20日   */
   t.tm_wday = 0;       /* 日曜日 */
   t.tm_hour = 14;      /* 14時   */
   t.tm_min  = 20;      /* 20分   */
   t.tm_sec  = 0;       /* 00秒   */

   /* 構造体を時刻に変換 */
   timer = mktime(&t);

   printf("時刻 : %ld\n",timer);

   /* 再変換して確認 */
   t_st = localtime(&timer);

   printf("年  : %d\n",t_st->tm_year+1900);
   printf("月  : %d\n",t_st->tm_mon+1);
   printf("日  : %d\n",t_st->tm_mday);
   printf("曜日: %d\n",t_st->tm_wday);
   printf("時  : %d\n",t_st->tm_hour);
   printf("分  : %d\n",t_st->tm_min);
   printf("秒  : %d\n",t_st->tm_sec);

   return 0;
}




この投稿にコメントする

削除パスワード

No.21956

Re:カレンダー時刻
投稿者---管理人(2005/07/16 00:02:15)


>載せていただいたページのサンプルもcygwinだとうまくいきません。
>(戻値-1になってしまいます)

サンプルプログラムに tm_isdst の設定が抜けていました。
   t.tm_isdst= -1;      /* 夏時間無効 */

を追加してください。
ご迷惑をお掛けし、申し訳ありません。




この投稿にコメントする

削除パスワード

No.21965

Re:カレンダー時刻
投稿者---黒ぺけじぇー(2005/07/16 13:09:42)


今度はcygwinでもうまくいきました。
cygwinだと tm_isdst が必要なんですね。
ありがとうございました。


この投稿にコメントする

削除パスワード

No.21967

Re:カレンダー時刻
投稿者---管理人(2005/07/16 13:46:54)


>今度はcygwinでもうまくいきました。
>cygwinだと tm_isdst が必要なんですね。

いえ、違います。どの処理系でも必要です。

サンプルに tm_isdst を設定していなかったので、不定値が入り、
たまたま上手くいっていたので、確認時に気が付かなかったのです。
Cygwinで実行していただいたお陰でバグが見つかり感謝しています。



この投稿にコメントする

削除パスワード

管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    ログ    タグ一覧