使用java.util.Date获取过去的日期

blu*_*sky 6 java

以下是我用来访问过去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);

    }

}
Run Code Online (Sandbox Code Playgroud)

Per*_*ror 14

你可以用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()));
Run Code Online (Sandbox Code Playgroud)


Kep*_*pil 5

这条线

Date oneDayBefore = new Date(myDate.getTime() - 10);    
Run Code Online (Sandbox Code Playgroud)

将日期设置为10毫秒,而不是10天.最简单的解决方案是在10天内减去毫秒数:

Date tenDaysBefore = new Date(myDate.getTime() - (10 * 24 * 60 * 60 * 1000));    
Run Code Online (Sandbox Code Playgroud)