SimpleDateFormat中找不到方法错误的方法

时间:2010-11-07 07:00:36

标签: java

import java.util.*;    
import java.text.*;

public class GetPreviousAndNextDate
{
    public static void main(String[] args) 
    {       
        int MILLIS_IN_DAY = 1000 * 60 * 60 * 24;      
        Date date = new Date();       
        SimpleDateFormat dateFormat = new SimpleDateFormat("dd/MM/yy");
        String prevDate = dateFormat.format(date.getTime() - MILLIS_IN_DAY);
        String currDate = dateFormat.format(date.getTime());
        String nextDate = dateFormat.format(date.getTime() + MILLIS_IN_DAY);

        System.out.println("Previous date: " + prevDate);
        System.out.println("Currnent date: " + currDate);
        System.out.println("Next date: " + nextDate);
    }  
}

我有这个错误

(Error(9,32): method format(long) not found in class java.text.SimpleDateFormat )

3 个答案:

答案 0 :(得分:2)

您的代码逻辑错误。结果将在夏令时间开关周围休息一小时,因为这涉及23或25小时的日子。

对于date arithmethic,您应该始终使用Calendar类:

    Calendar cal = Calendar.getInstance();
    cal.add(Calendar.DAY_OF_MONTH, -1);
    String prevDate = dateFormat.format(cal.getTime());
    cal.add(Calendar.DAY_OF_MONTH, 2);
    String nextDate = dateFormat.format(cal.getTime());

(请注意Calendar.getTime()返回Date个对象,从而修复了类型错误。

答案 1 :(得分:1)

要从长时间创建日期,您只需使用new Date(long) API

new Date(date.getTime() - MILLIS_IN_DAY);

答案 2 :(得分:0)

这些行使用不存在的方法:

 String prevDate = dateFormat.format(date.getTime() - MILLIS_IN_DAY);

 String currDate = dateFormat.format(date.getTime());

 String nextDate = dateFormat.format(date.getTime() + MILLIS_IN_DAY);

方法format接受Date个对象作为参数。

试试这个:

 String prevDate = dateFormat.format(new Date(date.getTime() - MILLIS_IN_DAY));