2

我尝试在 0:00 am - 12:00 am 内的时间减去一天。

例如: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 类检查和修改 Date。

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)找出一天中的小时。

用于cal.add(Calendar.DATE, -1)设置前一天的日期。

用于cal.getTime()获取存储在日历中的时间的新 Date 实例。

于 2012-12-14T14:40:07.297 回答
1

与几乎所有有关日期/时间的问题一样,请尝试Joda Time

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 回答