如何获得一个月的日子?

时间:2011-08-29 04:46:08

标签: java android

我正在尝试检索它当月的哪一天。

如今今天是2011年8月29日。

我想做的就是获取29天或30天的天数。这个月的哪一天。

我将如何做到这一点?

9 个答案:

答案 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)

TL;博士

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.

java.time

现代方法是LocalDate类来表示仅限日期的值。

时区对于确定当前日期至关重要。对于任何特定时刻,日期在全球范围内因地区而异。

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

您也可以获得星期几。

DayOfWeek dow = ld.getDayOfWeek();

关于 java.time

java.time框架内置于Java 8及更高版本中。这些类取代了麻烦的旧legacy日期时间类,例如java.util.DateCalendar和& SimpleDateFormat

现在位于Joda-Timemaintenance 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的试验场。您可以在此处找到一些有用的课程,例如IntervalYearWeekYearQuartermore


约达时间

更新: 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个顶级课程 - LocalDateLocalTimeLocalDateTime分别用于描述日期,时间和日期时间。虽然它们在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方法的字符。

enter image description here

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

查看有关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))