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

时间:2013-01-03 14:22:32

标签: 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);

    }

}

6 个答案:

答案 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);