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