我尝试在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;
}
谢谢,
答案 0 :(得分: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
答案 1 :(得分: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)
查找当天的小时数。
使用cal.add(Calendar.DATE, -1)
设置一天的日期。
使用cal.getTime()
获取存储在日历中的时间的新Date实例。
答案 2 :(得分: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;
}