ada*_*shr 278
java.util.Date date= new Date();
Calendar cal = Calendar.getInstance();
cal.setTime(date);
int month = cal.get(Calendar.MONTH);
Run Code Online (Sandbox Code Playgroud)
Ort*_*kni 44
您还可以在Java 8中使用java.time包并将java.util.Date对象转换为java.time.LocalDate对象,然后只使用该getMonthValue()方法.
Date date = new Date();
LocalDate localDate = date.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
int month = localDate.getMonthValue();
Run Code Online (Sandbox Code Playgroud)
请注意,月份值在1到12之间给出,与cal.get(Calendar.MONTH)adarshr的答案相反,后者的值为0到11.
但正如Basil Bourque在评论中所说,首选方法是Month使用该LocalDate::getMonth方法获取枚举对象.
小智 13
如果你使用Java 8 date api,你可以直接把它放在一行!
LocalDate today = LocalDate.now();
int month = today.getMonthValue();
Run Code Online (Sandbox Code Playgroud)
小智 7
//convert date to datetime
DateTime datetime = new DateTime(date);
int month = Integer.parseInt(datetime.toString("MM"))
Run Code Online (Sandbox Code Playgroud)
…要么…
int month = dateTime.getMonthOfYear();
Run Code Online (Sandbox Code Playgroud)
myUtilDate.toInstant() // Convert from legacy class to modern. `Instant` is a point on the timeline in UTC.
.atZone( // Adjust from UTC to a particular time zone to determine date. Renders a `ZonedDateTime` object.
ZoneId.of( "America/Montreal" ) // Better to specify desired/expected zone explicitly than rely implicitly on the JVM’s current default time zone.
) // Returns a `ZonedDateTime` object.
.getMonthValue() // Extract a month number. Returns a `int` number.
Run Code Online (Sandbox Code Playgroud)
java.time 细节Ortomala Lokni对使用java.time 的回答是正确的.你应该使用java.time,因为它是对旧的java.util.Date/.Calendar类的巨大改进.请参阅java.time上的Oracle教程.
我将添加一些代码,展示如何使用java.time而不考虑java.util.Date,因为当你开始使用新代码时.
简而言之,使用java.time ... Instant在UTC的时间轴上是一个时刻.应用时区(ZoneId)来获得ZonedDateTime.
该Month课程是一个复杂的枚举,代表一个月一般.该枚举有方便的方法,如获取本地化的名称.并且请放心,java.time中的月份数字是理智的,1-12,而不是java.util.Date/.Calendar中的零基础无意义(0-11).
要获得当前的日期时间,时区至关重要.在任何时候,世界各地的日期都不一样.因此,如果接近月末/月初,那么全世界的月份就不一样了.
ZoneId zoneId = ZoneId.of( "America/Montreal" ); // Or 'ZoneOffset.UTC'.
ZonedDateTime now = ZonedDateTime.now( zoneId );
Month month = now.getMonth();
int monthNumber = month.getValue(); // Answer to the Question.
String monthName = month.getDisplayName( TextStyle.FULL , Locale.CANADA_FRENCH );
Run Code Online (Sandbox Code Playgroud)
该java.time框架是建立在Java 8和更高版本.这些类取代麻烦的老传统日期时间类,如java.util.Date,Calendar,和SimpleDateFormat.
现在处于维护模式的Joda-Time项目建议迁移到java.time类.
要了解更多信息,请参阅Oracle教程.并搜索Stack Overflow以获取许多示例和解释.规范是JSR 310.
您可以直接与数据库交换java.time对象.使用符合JDBC 4.2或更高版本的JDBC驱动程序.不需要字符串,不需要课程.java.sql.*
从哪里获取java.time类?
该ThreeTen-额外项目与其他类扩展java.time.该项目是未来可能添加到java.time的试验场.您可以在此比如找到一些有用的类Interval,YearWeek,YearQuarter,和更多.
如果您不能使用 Joda 时间并且您仍然生活在黑暗的世界中 :)(Java 5 或更低版本)您可以享受这个:
注意:请确保您的日期已按格式:dd/MM/YYYY
/**
Make an int Month from a date
*/
public static int getMonthInt(Date date) {
SimpleDateFormat dateFormat = new SimpleDateFormat("MM");
return Integer.parseInt(dateFormat.format(date));
}
/**
Make an int Year from a date
*/
public static int getYearInt(Date date) {
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy");
return Integer.parseInt(dateFormat.format(date));
}
Run Code Online (Sandbox Code Playgroud)