Java:从日期获取月份整数
如何从 Date 对象 (java.util.Date
) 获取整数形式的月份?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
如何从 Date 对象 (java.util.Date
) 获取整数形式的月份?
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(8)
java.time (Java 8)
您还可以使用 java.time 包 并转换您的
java.util.Date
对象到java.time.LocalDate
对象,然后只需使用getMonthValue()
< /a> 方法。请注意,这里给出的月份值是从 1 到 12,这与 adarshr 的答案中的
cal.get(Calendar.MONTH)
相反,它给出了从 0 到 11 的值。但正如 Basil Bourque 在评论中所说,首选方法是获取
Month
带有LocalDate::getMonth
方法。java.time (Java 8)
You can also use the java.time package in Java 8 and convert your
java.util.Date
object to ajava.time.LocalDate
object and then just use thegetMonthValue()
method.Note that month values are here given from 1 to 12 contrary to
cal.get(Calendar.MONTH)
in adarshr's answer which gives values from 0 to 11.But as Basil Bourque said in the comments, the preferred way is to get a
Month
enum object with theLocalDate::getMonth
method.如果你使用Java 8日期api,直接一行即可获取!
If you use Java 8 date api, you can directly get it in one line!
Joda-Time
或者,使用 Joda-Time
DateTime
类。…或者…
Joda-Time
Alternatively, with the Joda-Time
DateTime
class.…or…
tl;dr
java.time
详细信息Ortomala Lokni 使用 java.time 是正确的。您应该使用java.time,因为它比旧的java.util.Date/.Calendar 类有了巨大的改进。请参阅 java.time 上的 Oracle 教程。
我将添加一些代码,展示如何在开始使用新代码时使用 java.time,而不考虑 java.util.Date。
简而言之,使用 java.time...
即时
是 UTC 时间线上的一个时刻。应用时区 (ZoneId
)来获取ZonedDateTime
。月份
class 是一个复杂的 enum 来表示一般月份。该枚举具有方便的方法,例如获取本地化名称。请放心,java.time 中的月份数字是正常的,即 1-12,而不是 java.util.Date/.Calendar 中的从零开始的废话 (0-11)。要获取当前日期时间,时区至关重要。在任何时候,世界各地的日期都不相同。因此,如果接近月底/月初,世界各地的月份是不一样的。
关于 java.time
java.time 框架内置于 Java 8 及更高版本中。这些类取代了麻烦的旧遗留日期时间类,例如
java.util.Date
,日历
,&SimpleDateFormat
。Joda-Time 项目,现已在 维护模式,建议迁移到java.time 类。
要了解更多信息,请参阅 Oracle 教程 。并在 Stack Overflow 上搜索许多示例和解释。规范为 JSR 310。
您可以直接与数据库交换java.time对象。使用符合 JDBC 驱动程序 jeps/170" rel="noreferrer">JDBC 4.2 或更高版本。不需要字符串,不需要 java.sql.* 类。
从哪里获取 java.time 类?
ThreeTen-Extra 项目通过附加类扩展了 java.time。该项目是 java.time 未来可能添加的内容的试验场。您可能会在这里找到一些有用的类,例如
Interval
,YearWeek
、YearQuarter
和 更多。tl;dr
java.time
DetailsThe Answer by Ortomala Lokni for using java.time is correct. And you should be using java.time as it is a gigantic improvement over the old java.util.Date/.Calendar classes. See the Oracle Tutorial on java.time.
I'll add some code showing how to use java.time without regard to java.util.Date, for when you are starting out with fresh code.
Using java.time in a nutshell… An
Instant
is a moment on the timeline in UTC. Apply a time zone (ZoneId
) to get aZonedDateTime
.The
Month
class is a sophisticated enum to represent a month in general. That enum has handy methods such as getting a localized name. And rest assured that the month number in java.time is a sane one, 1-12, not the zero-based nonsense (0-11) found in java.util.Date/.Calendar.To get the current date-time, time zone is crucial. At any moment the date is not the same around the world. Therefore the month is not the same around the world if near the ending/beginning of the month.
About java.time
The java.time framework is built into Java 8 and later. These classes supplant the troublesome old legacy date-time classes such as
java.util.Date
,Calendar
, &SimpleDateFormat
.The Joda-Time project, now in maintenance mode, advises migration to the java.time classes.
To learn more, see the Oracle Tutorial. And search Stack Overflow for many examples and explanations. Specification is JSR 310.
You may exchange java.time objects directly with your database. Use a JDBC driver compliant with JDBC 4.2 or later. No need for strings, no need for
java.sql.*
classes.Where to obtain the java.time classes?
The ThreeTen-Extra project extends java.time with additional classes. This project is a proving ground for possible future additions to java.time. You may find some useful classes here such as
Interval
,YearWeek
,YearQuarter
, and more.如果您无法使用 Joda 时间并且您仍然生活在黑暗世界中:)(Java 5 或更低版本)您可以享受这个:
注意:确保您的日期已按格式准备好:dd/MM/YYYY
If you can't use Joda time and you still live in the dark world :) ( Java 5 or lower ) you can enjoy this :
Note: Make sure your date is allready made by the format : dd/MM/YYYY
如果我们使用 java.time.LocalDate api,我们可以在单行中获取整数月份数字:
例如今天的日期是 2022 年 7 月 29 日,输出将为 7。
If we use java.time.LocalDate api, we can get month number in integer in single line:
For example today's date is 29-July-2022, output will be 7.
返回值从0开始,所以应该给结果加1。
The returned value starts from 0, so you should add one to the result.