以下是我用来访问过去10天前的日期的代码。输出是'20130103',这是今天的日期。我怎样才能返回今天的日期 - 10天?我只能使用内置的java日期类,所以不能使用joda时间。
package past.date;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
public class PastDate {
public static void main(String args[]){
DateFormat dateFormat = new SimpleDateFormat("yyyyMMdd");
Date myDate = new Date(System.currentTimeMillis());
Date oneDayBefore = new Date(myDate.getTime() - 10);
String dateStr = dateFormat.format(oneDayBefore);
System.out.println("result is "+dateStr);
}
}
答案 0 :(得分:13)
你可以用Calender的方法来操纵日期。
DateFormat dateFormat = new SimpleDateFormat("yyyyMMdd");
Date myDate = new Date(System.currentTimeMillis());
System.out.println("result is "+ dateFormat.format(myDate));
Calendar cal = Calendar.getInstance();
cal.setTime(myDate);
cal.add(Calendar.DATE, -10);
System.out.println(dateFormat.format(cal.getTime()));
答案 1 :(得分:5)
这一行
Date oneDayBefore = new Date(myDate.getTime() - 10);
将日期设置为10毫秒,而不是10天。最简单的解决方案是在10天内减去毫秒数:
Date tenDaysBefore = new Date(myDate.getTime() - (10 * 24 * 60 * 60 * 1000));
答案 2 :(得分:3)
使用Calendar.add(Calendar.DAY_OF_MONTH, -10)
。
答案 3 :(得分:2)
类Date表示特定的时刻,精确到毫秒。
Date oneDayBefore = new Date(myDate.getTime() - 10);
所以这里你只减去10毫秒,但你需要减去10天乘以10 * 24 * 60 * 60 * 1000
答案 4 :(得分:1)
Date today = new Date();
Calendar cal = new GregorianCalendar();
cal.setTime(today);
cal.add(Calendar.DAY_OF_MONTH, -30);
Date today30 = cal.getTime();
System.out.println(today30);
答案 5 :(得分:1)
您也可以这样:
Date tenDaysBefore = DateUtils.addDays(new Date(), -10);