7

以下は、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);

    }

}
4

6 に答える 6

15

のメソッドで日付を操作できCalendarます。

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()));
于 2013-01-03T14:25:26.253 に答える
6

この行

Date oneDayBefore = new Date(myDate.getTime() - 10);    

日付を 10 日ではなく 10 ミリ秒戻します。最も簡単な解決策は、10 日間のミリ秒数を差し引くことです。

Date tenDaysBefore = new Date(myDate.getTime() - (10 * 24 * 60 * 60 * 1000));    
于 2013-01-03T14:24:53.103 に答える
2

クラス Date は、ミリ秒の精度で特定の瞬間を表します。

Date oneDayBefore = new Date(myDate.getTime() - 10); 

したがって、ここでは 10 ミリ秒だけ減算しますが、10 * 24 * 60 * 60 * 1000 を掛けて 10 日を減算する必要があります。

于 2013-01-03T14:24:31.557 に答える
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);
于 2015-08-18T12:57:41.893 に答える