如何得到一个月的一天?

我正试图检索一个月中的哪一天。

如今天是2011年8月29日。

我想要做的只是获得诸如29或30这样的天数。这是哪一天的哪一天。

我怎么去做这个?

你会想得到一个日历实例,并得到它的一个月的一天

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等。

以下方法可以帮助您find任何指定date的一天:

 public static int getDayOfMonth(Date aDate) { Calendar cal = Calendar.getInstance(); cal.setTime(aDate); return cal.get(Calendar.DAY_OF_MONTH); } 

看看GregorianCalendar ,如下所示:

 final Calendar now = GregorianCalendar.getInstance() final int dayNumber = now.get(Calendar.DAY_OF_MONTH); 

您可以先阅读Date的文档。 然后你意识到Date的方法都被弃用,转而使用Calender 。

 Calendar now = Calendar.getInstance(); System.out.println(now.get(Calendar.DAY_OF_MONTH)); 

TL;博士

 LocalDate.now( ZoneId.of( "America/Montreal" ) ).getDayOfMonth() 

java.time

现代的方法是LocalDate类来表示只有date的值。

时区对确定当前date至关重要。 对于任何特定的时刻,date在全球各地按照地区而不同。

 ZoneId z = ZoneId.of( "America/Montreal" ); LocalDate ld = LocalDate.now( z ) ; int dayOfMonth = ld.getDayOfMonth(); 

你也可以得到星期几。

 DayOfWeek dow = ld.getDayOfWeek(); 

乔达时间

更新:Joda-Time项目现在处于维护模式,并build议迁移到java.time类。

使用Joda-Time 2.5库,而不是使用臭名昭着的java.util.Date和.Calendar类。

时区对确定date至关重要。 最好是指定区域,而不是隐式地依赖JVM当前分配的默认时区。

 DateTimeZone zone = DateTimeZone.forID( "America/Montreal" ); DateTime now = DateTime.now( zone ).withTimeAtStartOfDay(); int dayOfMonth = now.getDayOfMonth(); 

或者在LocalDate类中使用类似的代码,它没有时间部分。

Java 8更新

Java 8为时间和date操作引入了下列软件包。

 java.time.*; java.time.format.*; java.time.chono.*; java.time.temporal.*; java.time.zone.*; 

这些更有组织和直观。

我们只需要讨论最多的两个软件包。
有3个顶级类 – 分别描述date,时间和date时间的LocalDateLocalTimeLocalDateTime 。 虽然它们在toString()中格式正确,但每个类都有格式化方法,它接受DateTimeFormatter以自定义的方式进行格式化。

DateTimeFormatter也可以用来显示每天给定的date。 它几乎没有

 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接受在java.time.format枚举的java.time.format

ofPattern接受String限制长度的限制模式字符。 这里是可以传递到toPattern方法的字符。

在这里输入图像说明

您可以尝试不同数量的模式来查看输出结果如何。

查看更多关于Java 8 DateTime API的信息

 //This will get you the day of the month String.valueOf((Calendar.getInstance()).get(Calendar.DAY_OF_MONTH))