whe*_*c64 18 java date date-format simpledateformat
我已经写了一个方法来获取当前日期的格式,yyyy-MM-dd并希望能够创建另一种方法来获取昨天的日期,即当前日期的前一天.所有这些需求是日期而不是时间戳.我也不想使用Calendar它.我这样设置了当前日期:
public class DateWithNoTimestamp
{
private static final String CURRENT_DATE_FORMAT = "yyyy-MM-dd";
public final static String getCurrentDate()
{
DateFormat dateFormat = new SimpleDateFormat(CURRENT_DATE_FORMAT);
Date date = new Date();
return dateFormat.format(date);
}
}
Run Code Online (Sandbox Code Playgroud)
这可以获得当前日期,现在是getYesertdayDate()我遇到麻烦的单独方法.如何getCurrentDate()在减去一天的同时以与我相同的方式进行设置?
Gio*_*tta 23
您可以简单地1000 * 60 * 60 * 24从日期中减去毫秒并格式化该值:
Date yesterday = new Date(System.currentTimeMillis() - 1000L * 60L * 60L * 24L));
Run Code Online (Sandbox Code Playgroud)
这是快速而肮脏的方式,并且正如评论中所指出的,当夏令时转换发生时(每年两天),它可能会破裂.推荐的替代方案是Calendar API,Joda API或新的JDK 8时间API:
LocalDate today = LocalDate.now();
LocalDate yesterday = today.minusDays(1);
Run Code Online (Sandbox Code Playgroud)
dyn*_*yng 14
我发现org.apache.commons.lang3.time.DateUtils它更直观,更易于使用.
对于你的问题
Date date = DateUtils.addDays(new Date(), -1);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
return sdf.format(date);
Run Code Online (Sandbox Code Playgroud)
会做的.它在JDK7或更低版本中也能很好地工作.
lla*_*all 12
使用Java 8及更高版本,使用java.time.LocalDate类:
LocalDate yesterday = LocalDate.now().minusDays(1L);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
41898 次 |
| 最近记录: |