2

午前0時から午前12時までの1日を差し引くようにしています。

例:2012-12-14 06:35 am=>2012-12-13

私は機能を実行しました、そしてそれは仕事です。しかし、私の質問は、この場合、他のより良いコードですか?はるかにシンプルで理解しやすい。

public String getBatchDate() {

    SimpleDateFormat timeFormatter = new SimpleDateFormat("H");
    int currentTime = Integer.parseInt(timeFormatter.format(new Date()));
    SimpleDateFormat dateFormatter = new SimpleDateFormat("yyyyMMdd");
    String Date = dateFormatter.format(new Date());

    if ( 0 <= currentTime && currentTime <= 12){
        try {
            Calendar shiftDay = Calendar.getInstance();
            shiftDay.setTime(dateFormatter.parse(Date));
            shiftDay.add(Calendar.DATE, -1); 
            Date = dateFormatter.format(shiftDay.getTime());
        } catch (ParseException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        Log.d("BatchDate:", Date);
    }

    return Date;

}

ありがとう、

4

3 に答える 3

5
Calendar shiftDay = Calendar.getInstance();
shiftDay.setTime(new Date())
if(shiftDay.get(Calendar.HOUR_OF_DAY) <= 12){
    shiftDay.add(Calendar.DATE, -1);
}
//your date format
于 2012-12-14T14:42:38.367 に答える
2

Calendarクラスを使用して、日付を検査および変更します。

Calendar cal = new GregorianCalendar(); // initializes calendar with current time
cal.setTime(date); // initializes the calender with the specified Date

cal.get(Calendar.HOUR_OF_DAY)1日の時間を見つけるために使用します。

cal.add(Calendar.DATE, -1)日付を1日前に設定するために使用します。

cal.getTime()カレンダーに保存された時刻の新しいDateインスタンスを取得するために使用します。

于 2012-12-14T14:40:07.297 に答える
1

日付/時刻に関するほぼすべての質問と同様に、JodaTimeを試してください

public String getBatchDate() {
    DateTime current = DateTime.now();
    if (current.getHourOfDay() <= 12)
           current = current.minusDays(1); 
    String date = current.toString(ISODateTimeFormat.date());
    Log.d("BatchDate:" + date);
    return date;
}
于 2012-12-14T14:45:08.130 に答える