0

分単位で指定された数値から月、日、時、分の数を取得するカウンターを作成したい、たとえば、次のことを知っている:

60 minutes in an hour
24 hours in a day = 60 x 24 = 1440 minutes
31 days per month 
1 month = 24 x 60 x 31 = 44,640 minutes

たとえば、44640 という数値を指定すると、1 か月 0 日 0 時間 0 分が必要になります。たとえば、44700 を指定すると、1 か月 0 日 0 時間 60 分または 1 か月 0 日 1 時間 0 分になります。

助けてください?

4

1 に答える 1

3
int total_minutes = 44640; 
int total_hours   = total_minutes / 60;
int minutes = total_minutes % 60;
int total_days = total_hours / 24;
int hours = total_hours % 24;
int months = total_days / 31;
int days = total_days % 31;

printf("%d months, %d days, %02d:%02d\n", months, days, hours, minutes);

しかし、月はすべて 31 日ではないため、誤解を招く可能性があります。平均すると、グレゴリオ暦の 1 か月は 30.436875 日 (43829.1 分) であるため、この数値を使用できます。多くのアプリケーションでは、このような計算では、1 か月が常に 30 日であると仮定しています。ただし、時間間隔が特定の時点に固定されている場合は、両端の日付を使用して、その間に何ヶ月あるかを判断する方がよい場合があります。

于 2012-05-10T23:30:41.103 に答える