我正在尝试检索它当月的哪一天。
如今今天是2011年8月29日。
我想做的就是获取29天或30天的天数。这个月的哪一天。
我将如何做到这一点?
答案 0 :(得分:80)
你想要获得一个日历实例,并获得它的日期
Calendar cal = Calendar.getInstance();
int dayOfMonth = cal.get(Calendar.DAY_OF_MONTH);
String dayOfMonthStr = String.valueOf(dayOfMonth);
您还可以获得DAY_OF_WEEK,DAY_OF_YEAR,DAY_OF_WEEK_IN_MONTH等。
答案 1 :(得分:14)
以下方法可帮助您查找任何指定日期的日期:
public static int getDayOfMonth(Date aDate) {
Calendar cal = Calendar.getInstance();
cal.setTime(aDate);
return cal.get(Calendar.DAY_OF_MONTH);
}
答案 2 :(得分:6)
LocalDate.now().getDayOfMonth() // Better to pass a `ZoneId` optional argument to `now` as shown below than rely implicitly on the JVM’s current default time zone.
现代方法是LocalDate
类来表示仅限日期的值。
时区对于确定当前日期至关重要。对于任何特定时刻,日期在全球范围内因地区而异。
ZoneId z = ZoneId.of( "America/Montreal" );
LocalDate ld = LocalDate.now( z ) ;
int dayOfMonth = ld.getDayOfMonth();
您也可以获得星期几。
DayOfWeek dow = ld.getDayOfWeek();
java.time框架内置于Java 8及更高版本中。这些类取代了麻烦的旧legacy日期时间类,例如java.util.Date
,Calendar
和& SimpleDateFormat
现在位于Joda-Time的maintenance mode项目建议迁移到java.time类。
要了解详情,请参阅Oracle Tutorial。并搜索Stack Overflow以获取许多示例和解释。规范是JSR 310。
使用符合JDBC driver或更高版本的JDBC 4.2,您可以直接与数据库交换 java.time 对象。不需要字符串也不需要java.sql。* classes。
从哪里获取java.time类?
ThreeTen-Extra项目使用其他类扩展java.time。该项目是未来可能添加到java.time的试验场。您可以在此处找到一些有用的课程,例如Interval
,YearWeek
,YearQuarter
和more。
更新: Joda-Time项目现在处于维护模式,并建议迁移到java.time类。这部分保留了完整的历史记录。
使用Joda-Time 2.5库而不是臭名昭着的java.util.Date和.Calendar类。
时区对于确定日期至关重要。最好指定区域,而不是隐式依赖于JVM当前分配的默认时区。
DateTimeZone zone = DateTimeZone.forID( "America/Montreal" );
DateTime now = DateTime.now( zone ).withTimeAtStartOfDay();
int dayOfMonth = now.getDayOfMonth();
或者使用类似的代码与LocalDate
类没有时间部分。
答案 3 :(得分:2)
查看GregorianCalendar
,例如:
final Calendar now = GregorianCalendar.getInstance()
final int dayNumber = now.get(Calendar.DAY_OF_MONTH);
答案 4 :(得分:1)
您可以先阅读Date的文档。然后你意识到Date的方法都已弃用,转而转向Calender。
Calendar now = Calendar.getInstance();
System.out.println(now.get(Calendar.DAY_OF_MONTH));
答案 5 :(得分:0)
Java 8更新
Java 8引入了以下用于时间和日期操作的包。
java.time.*;
java.time.format.*;
java.time.chono.*;
java.time.temporal.*;
java.time.zone.*;
这些更有条理,更直观。
我们只需要前两个方案进行讨论
有3个顶级课程 - LocalDate
,LocalTime
,LocalDateTime
分别用于描述日期,时间和日期时间。虽然它们在toString()
中格式正确,但每个类都有格式化方法,可以接受DateTimeFormatter
以自定义格式进行格式化。
DateTimeFormatter
也可用于显示给定日期的日期。它很少
import java.time.*;
import java.time.format.*;
class DateTimeDemo{
public static void main(String...args){
LocalDateTime x = LocalDateTime.now();
System.out.println(x.format(DateTimeFormatter.ofLocalizedDate(FormatStyle.FULL)));//Shows Day and Date.
System.out.println(x.format(DateTimeFormatter.ofPattern("EE")));//Short Form
System.out.println(x.format(DateTimeFormatter.ofPattern("EEEE")));//Long Form
}
}
ofLocalizedTime
接受FormatStyle
<{1}}中的枚举java.time.format
ofPattern
接受String
限制长度的限制模式字符。以下是可以传递到toPattern
方法的字符。
您可以尝试不同数量的模式来查看输出结果。
查看有关Java 8 DateTime API here
的更多信息答案 6 :(得分:0)
在Java 8版本中,它已大大简化。我在下面提供了一些util方法。
对于给定的日期,月份和年份,以
int
的格式获取月份中的某天。
public static int findDay(final int month, final int day, final int year) {
// System.out.println(LocalDate.of(year, month, day).getDayOfMonth());
return LocalDate.of(year, month, day).getDayOfMonth();
}
以
int
的格式获取每月的当前日期。
public static int findDay(final int month, final int day, final int year) {
// System.out.println(LocalDate.now(ZoneId.of("Asia/Kolkata")).getDayOfMonth());
return LocalDate.now(ZoneId.of("Asia/Kolkata")).getDayOfMonth();
}
对于给定的日期,月份和年份,以
String
的格式获取星期几。
public static String findDay(final int month, final int day, final int year) {
// System.out.println(LocalDate.of(year, month, day).getDayOfWeek());
return LocalDate.of(year, month, day).getDayOfWeek().toString();
}
以
String
的格式获取星期几。
public static String findDay(final int month, final int day, final int year) {
// System.out.println(LocalDate.now(ZoneId.of("Asia/Kolkata"))..getDayOfWeek());
return LocalDate.now(ZoneId.of("Asia/Kolkata")).getDayOfWeek().toString();
}
答案 7 :(得分:0)
LocalDate date = new Date(); date.lengthOfMonth()
或
DateTimeFormatter格式化程序= DateTimeFormatter.ofPattern(“ YYYY-MM-dd”);
DateTimeFormatter monthFormatter = DateTimeFormatter.ofPattern(“ MMM”);
字符串stringDate = formatter.format(date);
字符串month = monthFormatter.format(date);
答案 8 :(得分:-2)
//This will get you the day of the month
String.valueOf((Calendar.getInstance()).get(Calendar.DAY_OF_MONTH))