Java 中日期递减
我想从当前时间获取前一天(24 小时)。
例如,如果当前时间是 Date currentTime = new Date();
2011-04-25 12:15:31:562 GMT
如何确定时间即
2011-04-24 12:15:31:562 GMT
I want to get the previous day (24 hours) from the current time.
e.g if current time is Date currentTime = new Date();
2011-04-25 12:15:31:562 GMT
How to determine time i.e
2011-04-24 12:15:31:562 GMT
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
您可以使用日历类来做到这一点:
You can do that using Calendar class:
我建议您使用 Joda Time 开始,这是一个很多< /em> 更好的 API。然后您可以使用:
请注意,“昨天的这个时间”并不总是 24 小时前...您需要考虑时区等。您可能需要使用
LocalDateTime
或Instant
而不是DateTime
。I would suggest you use Joda Time to start with, which is a much nicer API. Then you can use:
Note that "this time yesterday" isn't always 24 hours ago though... you need to think about time zones etc. You may want to use
LocalDateTime
orInstant
instead ofDateTime
.请在这里查看:
Java 日期与日历
please checkout this here:
Java Date vs Calendar
24小时和1天不是一回事。但您可以使用日历来执行这两项操作:
如果您要返回 24 小时,则可以使用
Calendar.HOUR_OF_DAY
24 hours and 1 day are not the same thing. But you do both using Calendar:
If you are going back 24 hours, you would use
Calendar.HOUR_OF_DAY
java.time
java.util
Date-Time API 及其格式化 APISimpleDateFormat
已过时且容易出错。建议完全停止使用它们并切换到 现代日期时间 API*。另外,下面引用的是Joda-Time主页的通知< /a>:
使用现代日期时间 API
java.time
的解决方案:示例运行的输出:
在线演示
无论出于何种原因,如果您需要将
Instant
的这个对象转换为 < code>java.util.Date,您可以按如下方式执行此操作:从 跟踪:日期时间。
* 无论出于何种原因,如果您必须坚持使用 Java 6 或 Java 7,您可以使用 ThreeTen-Backport 将大部分 java.time 功能向后移植到 Java 6 和 Java 6 7. 如果您正在处理 Android 项目,并且您的 Android API 级别仍然不符合 Java-8,请检查 通过脱糖提供 Java 8+ API 和 如何在Android项目中使用ThreeTenABP。
java.time
The
java.util
Date-Time API and their formatting API,SimpleDateFormat
are outdated and error-prone. It is recommended to stop using them completely and switch to the modern Date-Time API*.Also, quoted below is a notice from the home page of Joda-Time:
Solution using
java.time
, the modern Date-Time API:Output of a sample run:
ONLINE DEMO
For any reason, if you need to convert this object of
Instant
to an object ofjava.util.Date
, you can do so as follows:Learn more about the modern Date-Time API from Trail: Date Time.
* For any reason, if you have to stick to Java 6 or Java 7, you can use ThreeTen-Backport which backports most of the java.time functionality to Java 6 & 7. If you are working for an Android project and your Android API level is still not compliant with Java-8, check Java 8+ APIs available through desugaring and How to use ThreeTenABP in Android Project.