0

こんにちは、エポック時間でタイムスタンプを作成しようとしています。これまでのところ、時間、分、秒、ミリ秒は問題ありません。しかし、私は日月と時間を把握することで何をすべきかという岐路に立っています。まず問題点が2点。各月の日数は、一貫したパターンがなく、閏年への取り組みの問題で異なります。適切なシステムを実装する方法に苦労しています。私は条件付きルートに行くことができると思いますが、おそらく私が実装できるある種のテーブルもあります(インストラクターからのヒント.

これまでのところ、誰かが興味を持っている場合、これは私が最大数時間持っているアルゴリズムです.

28 ExpandedTime* localTime(struct timeval* tv, ExpandedTime* etime)
 29 {
 30     tzset();                                    // Corrects timezone
 31
 32     int epochT = (tv->tv_sec) - timezone;       // Epoch seconds with
 33     int epochUT = tv->tv_usec;                  // Timezone correction
 34
 35     int seconds = epochT % 60;
 36     epochT /= 60;
 37     etime->et_sec = seconds;
 38     etime->et_usec = epochUT;
 39
 40     int minutes = epochT % 60;
 41     epochT /= 60;
 42     etime->et_min = minutes;
 43
 44     int hours = (epochT % 24) + daylight;       // Hours with DST correction
 45     epochT /= 24;
 46     etime->et_hour = hours;
 47
 48
 49     printf("%d,%d,%d\n", seconds, minutes, hours);
 50     printf("%d\n", epochUT);
 51     printf("%d\n", timezone);
 52     printf("%d\n", daylight);
 53     return etime;
 54
 55 }
 56
 57 char* formatTime(struct timeval* tv, char* buf, size_t len)
 58 {
 59
 60 struct ExpandedTime etime2;
 61 localTime(tv, &etime2);
 62 snprintf();
 63 }

その未完成の私は現在、年月日を実装する方法にこだわっています。誰かが私を正しい方向に導くことができれば、それは大歓迎です。

4

1 に答える 1

0

Unix エポック日付 (1970 年 1 月 1 日 00:00) を同等のユリウス日に変換し、時間を秒から日に変換し、その結果をエポックのユリウス日に追加します。これにより、目的の時刻のユリウス日が得られます。最後に、ユリウス日付を日付と時刻に戻します。

ユリウス日に変換するための適切な数式は、Web で見つけることができます。

于 2013-03-14T17:51:20.107 に答える