kar*_*thi 48 java datetime date java-time
如何从当前日期减少一个月,并希望java.util.Date使用此代码在变量im中疼痛,但它在第二行显示错误
java.util.Date da = new Date();
da.add(Calendar.MONTH, -1); //error
Run Code Online (Sandbox Code Playgroud)
如何将这个日期存储在java.util.Date变量中?
Ale*_*øld 90
使用日历:
Calendar cal = Calendar.getInstance();
cal.add(Calendar.MONTH, -1);
Date result = cal.getTime();
Run Code Online (Sandbox Code Playgroud)
DVa*_*rga 13
从Java 8开始,建议的方法是使用Date-Time API而不是Calendar.
如果要Date返回对象:
Date date = Date.from(ZonedDateTime.now().minusMonths(1).toInstant());
Run Code Online (Sandbox Code Playgroud)
如果您不需要完全Date对象,则可以直接使用包提供的类,甚至可以在其他时区中获取日期:
ZonedDateTime dateInUTC = ZonedDateTime.now(ZoneId.of("Pacific/Auckland")).minusMonths(1);
Run Code Online (Sandbox Code Playgroud)
Calendar calNow = Calendar.getInstance()
// adding -1 month
calNow.add(Calendar.MONTH, -1);
// fetching updated time
Date dateBeforeAMonth = calNow.getTime();
Run Code Online (Sandbox Code Playgroud)
您可以使用 Calendar
java.util.Date da = new Date();
Calendar cal = Calendar.getInstance();
cal.setTime(da);
cal.add(Calendar.MONTH, -1);
da = cal.getTime();
Run Code Online (Sandbox Code Playgroud)
使用JodaTime:
Date date = new DateTime().minusMonths(1).toDate();
Run Code Online (Sandbox Code Playgroud)
JodaTime为日期操作提供了方便的API.
请注意,类似的Date API将在JDK8中与JSR310一起引入.
在 Java8 和 Java9 中使用新的 java.time 包
import java.time.LocalDate;
LocalDate mydate = LocalDate.now(); // Or whatever you want
mydate = mydate.minusMonths(1);
Run Code Online (Sandbox Code Playgroud)
使用此方法的优点是您可以避免有关不同月份长度的所有问题,并且可以更灵活地调整日期和范围。本地部分也是时区智能,因此很容易在它们之间转换。
顺便说一句,使用 java.time 您还可以获得一周中的哪一天、一个月中的哪一天、直到本月最后一天的所有日子、直到一周中某一天的所有日子等。
mydate.plusMonths(1);
mydate.with(TemporalAdjusters.next(DayOfWeek.SUNDAY)).getDayOfMonth();
mydate.with(TemporalAdjusters.lastDayOfMonth());
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
73499 次 |
| 最近记录: |