1

時間差を四半期、週、日、時間、秒に計算する必要があります。数式が正しくわかりません。次の数式は次のようになります:3四半期、12週間、6日、23時間、59分。私は決して数学の専門家ではないので、どんな助けでも素晴らしいでしょう。

long difference = 31535872360L;/*A few seconds short of a year*/

long min =   (int) ((difference / (1000*60))%60);/*Returns 59 Minutes*/
long hours = (int) ((difference / (1000*60*60)) % 24);/*Returns 23 Hours*/
long days =  (int) ((difference / (1000*60*60*24)) % 7);/*Returns 0 Days*/
long weeks = (int) ( difference / (1000*60*60*24*7)% 12);/*Returns 4 Weeks*/
long quarters = (int) (((difference / (1000*60*60*24*7)%12)/3)+1);/*Returns 2 Quarters*/
4

2 に答える 2

0

私はあなたの四半期の式は

long quarters = (int) ((difference / (1000*60*60*24*7*12) % 4);
于 2013-02-05T18:59:55.913 に答える
0

この方法の方がクリーンでエラーが発生しにくいと思います。

private static final long MIN_MS = 1000 * 60;
private static final long HOUR_MS = MIN_MS * 60;
private static final long DAY_MS = HOUR_MS * 24;
private static final long WEEK_MS = DAY_MS * 7;
private static final long QUARTER_MS = WEEK_MS * 12;

public static void main(String[] args) throws Exception {
    long msecs = 31535872360L;/*A few seconds short of a year*/
    long q = msecs / QUARTER_MS;
    msecs -= q * QUARTER_MS;
    long w = msecs / WEEK_MS;
    msecs -= w * WEEK_MS;
    long d = msecs / DAY_MS;
    msecs -= d * DAY_MS;
    long h = msecs / HOUR_MS;
    msecs -= h * HOUR_MS;
    long min = msecs / MIN_MS;
    msecs -= min * MIN_MS;
    long secs = msecs / 1000;
    System.out.printf("%d q,%d w, %d d, %d:%d:%d \n", q, w, d, h, min, secs);
}
于 2013-02-05T22:50:13.467 に答える