0

Javaに関する簡単な質問:

私はこのコードを持っています:

// edited above

} else if ((now >= (1000 * 60 * 60 * 24) && (now < (1000 * 60 * 60 * 48)))) {
            now = (now / (1000 * 60 * 60 * 24));
            time = String.valueOf(now + " day ago");


} else if ((now >= (1000 * 60 * 60 * 48) && (now < (1000 * 60 * 60 * 24 * 30)))) {
            now = (now / (1000 * 60 * 60 * 24));
            time = String.valueOf(now + " days ago");

あなたは私がしていることを見ることができます。24〜48時間前の場合は「1日前」でしたが、48時間〜1か月(または30日)の場合は「X日**前」でした。この状況で月をどのように配置するかわかりません。if2番目のステートメントの右側を削除すると...機能します。376日前の3日前または15日前と表示されます。言うまでもなく、30日後、1か月以上前に言いたいのですが、その状況に基づいて、たとえば15日前のようなものは、その句内に登録されず、スキップされます。ここで本当に小さなものが欠けていますか?

補足コード:

これが全体の文脈です。すべてが「日」まで機能します。

    lCDateTime = Calendar.getInstance();
    now = lCDateTime.getTimeInMillis();

    now = now - total;

    if (now <= ((1000 * 60 * 1))) {
        now = (now / 1000);
        time = String.valueOf(now + " seconds ago");

    } else if ((now > (1000 * 60 * 1)) && (now < 1000 * 60 * 2)) {
        now = (now / (1000 * 60));
        time = String.valueOf(now + " minute ago");

    } else if ((now >= (1000 * 60 * 2)) && (now < 1000 * 60 * 60)) {
        now = (now / (1000 * 60));
        time = String.valueOf(now + " minutes ago");

    } else if ((now >= (1000 * 60 * 60) && now < (1000 * 60 * 60 * 2))) {
        now = (now / (1000 * 60 * 60));
        time = String.valueOf(now + " hour ago");

    } else if ((now >= (1000 * 60 * 60 * 2) && (now < (1000 * 60 * 60 * 24)))) {
        now = (now / (1000 * 60 * 60));
        time = String.valueOf(now + " hours ago");

    } else if ((now >= (1000 * 60 * 60 * 24) && (now < (1000 * 60 * 60 * 48)))) {
        now = (now / (1000 * 60 * 60 * 24));
        time = String.valueOf(now + " day ago");

    } else if ((now >= (1000 * 60 * 60 * 48) && (now < (1000 * 60 * 60 * 24 * 30)))) {
        now = (now / (1000 * 60 * 60 * 24));
        time = String.valueOf(now + " days ago");
4

1 に答える 1

5

あなたの最後の声明

else if ((now >= (1000 * 60 * 60 * 48) && (now < (1000 * 60 * 60 * 24 * 30))))

(1000 * 60 * 60 * 24 * 30)は-1702967296(別名オーバーフロー)に等しいため、真になることはありません。本当にこのようにすることを主張する場合は、BigIntegerを使用してください。ただし、コードを書き直すことを強くお勧めします。

于 2012-10-14T23:31:19.760 に答える