Wil*_*del 15
如果没有 Joda Time,这是怎么做的:
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
public class Main {
public static String previousDateString(String dateString)
throws ParseException {
// Create a date formatter using your format string
DateFormat dateFormat = new SimpleDateFormat("yyyyMMdd");
// Parse the given date string into a Date object.
// Note: This can throw a ParseException.
Date myDate = dateFormat.parse(dateString);
// Use the Calendar class to subtract one day
Calendar calendar = Calendar.getInstance();
calendar.setTime(myDate);
calendar.add(Calendar.DAY_OF_YEAR, -1);
// Use the date formatter to produce a formatted date string
Date previousDate = calendar.getTime();
String result = dateFormat.format(previousDate);
return result;
}
public static void main(String[] args) {
String dateString = "20100316";
try {
// This will print 20100315
System.out.println(previousDateString(dateString));
} catch (ParseException e) {
System.out.println("Invalid date string");
e.printStackTrace();
}
}
}
Run Code Online (Sandbox Code Playgroud)
vkr*_*mer 14
我会稍微改写这些答案.
您可以使用
DateFormat dateFormat = new SimpleDateFormat("yyyyMMdd");
// Get a Date object from the date string
Date myDate = dateFormat.parse(dateString);
// this calculation may skip a day (Standard-to-Daylight switch)...
//oneDayBefore = new Date(myDate.getTime() - (24 * 3600000));
// if the Date->time xform always places the time as YYYYMMDD 00:00:00
// this will be safer.
oneDayBefore = new Date(myDate.getTime() - 2);
String result = dateFormat.format(oneDayBefore);
Run Code Online (Sandbox Code Playgroud)
获得与使用Calendar计算的结果相同的结果.
Pra*_*ani 10
您可以使用:
Calendar cal = Calendar.getInstance();
//subtracting a day
cal.add(Calendar.DATE, -1);
SimpleDateFormat s = new SimpleDateFormat("yyyyMMdd");
String result = s.format(new Date(cal.getTimeInMillis()));
Run Code Online (Sandbox Code Playgroud)
这是一个老问题,大多数现有答案早于 Java 8。因此,为 Java 8+ 用户添加此答案。
Java的8引入了新的APIDate和Time更换设计不当,且难以使用java.util.Date和java.util.Calendar类。
要处理没有时区的日期,LocalDate可以使用 class。
String dateString = "20200301";
// BASIC_ISO_DATE is "YYYYMMDD"
// See below link to docs for details
LocalDate date = LocalDate.parse(dateString, DateTimeFormatter.BASIC_ISO_DATE);
// get date for previous day
LocalDate previousDate = date.minusDays(1);
System.out.println(previousDate.format(DateTimeFormatter.BASIC_ISO_DATE));
// prints 20200229
Run Code Online (Sandbox Code Playgroud)
文档:
没有库支持,它比Java更难.
您可以使用SimpleDateFormat类的实例将给定的String解析为Date对象.
然后你可以使用Calendar的add()来减去一天.
然后,您可以使用SimpleDateFormat的format()将格式化日期作为String.
将约达时间库更容易的API.
| 归档时间: |
|
| 查看次数: |
65402 次 |
| 最近记录: |