7

私はCountDown Days1つの日付から2番目の日付まで行う必要があります

例えば

CURRENT_DATE:3/1/2013 NEXT_DATE:21/01/2013

次に、::が表示されます17 DAYS LEFT

私はこれらのようなコードを実装しました

String inputDateString = "01/22/2013";
Calendar calCurr = Calendar.getInstance();
Calendar calNext = Calendar.getInstance();
calNext.setTime(new Date(inputDateString)); 

if(calNext.after(calCurr)) 
{
    long timeDiff = calNext.getTimeInMillis() - calCurr.getTimeInMillis();
    int daysLeft = (int) (timeDiff/DateUtils.DAY_IN_MILLIS);
    dni.setText("Days Left: "+daysLeft);
}
else
{
    long timeDiff = calCurr.getTimeInMillis() - calNext.getTimeInMillis();
    timeDiff = DateUtils.YEAR_IN_MILLIS - timeDiff;
    int daysLeft = (int) (timeDiff/DateUtils.DAY_IN_MILLIS);
}

これらを達成するためのより良い方法はありますか?

4

6 に答える 6

5

Calendarのメソッドを使用する:

String inputDateString = "01/22/2013";
Calendar calCurr = Calendar.getInstance();
Calendar day = Calendar.getInstance();
day.setTime(new SimpleDateFormat("MM/dd/yyyy").parse(inputDateString));
if(day.after(calCurr)){
               System.out.println("Days Left: " + (day.get(Calendar.DAY_OF_MONTH) -(calCurr.get(Calendar.DAY_OF_MONTH))) );
}

出力: 残り日数: 17

そして、年を 1 増やすには、 Calendar.add() メソッドを使用できます

        day.add(Calendar.YEAR, 1);
于 2013-01-04T11:10:57.323 に答える
2

n days日付を形式に変換するライブラリがいくつかあります。

于 2013-01-04T11:09:10.647 に答える
0

このコードをインターネットで検索しましたが、見つけることができませんでした。返事が遅くなってしまいましたが、これは便利なコードです。

public static String getTimeLeft(String date) { // dateFormat = "yyyy-MM-dd"
    String[] DateSplit = date.split("-");
    int month = Integer.parseInt(DateSplit[1]) - 1, // if month is november  then subtract by 1
    year = Integer.parseInt(DateSplit[0]), day = Integer
            .parseInt(DateSplit[2]), hour = 0, minute = 0, second = 0;
    Calendar now = Calendar.getInstance();

    int sec = second - Calendar.getInstance().get(Calendar.SECOND), min = minute
            - Calendar.getInstance().get(Calendar.MINUTE), hr = hour
            - Calendar.getInstance().get(Calendar.HOUR_OF_DAY), dy = day
            - Calendar.getInstance().get(Calendar.DATE), mnth = month
            - Calendar.getInstance().get(Calendar.MONTH), daysinmnth = 32 - dy;

    Calendar end = Calendar.getInstance();

    end.set(year, month, day);

    if (mnth != 0) {
        if (dy != 0) {
            if (sec < 0) {
                sec = (sec + 60) % 60;
                min--;
            }
            if (min < 0) {
                min = (min + 60) % 60;
                hr--;
            }
            if (hr < 0) {
                hr = (hr + 24) % 24;
                dy--;
            }
            if (dy < 0) {
                dy = (dy + daysinmnth) % daysinmnth;
                mnth--;
            }
            if (mnth < 0) {
                mnth = (mnth + 12) % 12;
            }
        }
    }

    String hrtext = (hr == 1) ? "hour" : "hours", dytext = (dy == 1) ? "day"
            : "days", mnthtext = (mnth == 1) ? "month" : "months";

    if (now.after(end)) {
        return "";
    } else {
        String months = "", days = "", hours = "";
        months = (mnth > 0) ? mnth + " " + mnthtext : "";
        if (mnth <= 0) {
            days = (dy > 0) ? dy + " " + dytext : "";
            if (dy <= 0) {
                hours = (hr > 0) ? hr + " " + hrtext : "";
            }
        }
        //Log.d("DATE", months + " 1 " + days + " 2 " + hours);
        return months + days + hours;
    }
}
于 2014-03-01T15:05:55.173 に答える