Java 如何获得一个月的第一天的名称?

Java 如何获得一个月的第一天的名称?,java,Java,我怎样才能得到这个月的第一天呢?因此,今年1月,它将在周日回归。然后在2月份它将在周三返回。创建java.util.Date或java.util.Calendar对象,设置日期值并使用java.text.SimpleDataFormat类方法对其进行格式化 Calendar cal=Calendar.getInstance(); cal.set(Calendar.DATE,1); cal.set(Calendar.MONTH,0); cal.set(Calendar.YEAR,2012)

我怎样才能得到这个月的第一天呢?因此,今年1月,它将在周日回归。然后在2月份它将在周三返回。

创建
java.util.Date
java.util.Calendar
对象,设置日期值并使用
java.text.SimpleDataFormat
类方法对其进行格式化

 Calendar cal=Calendar.getInstance();
 cal.set(Calendar.DATE,1);
 cal.set(Calendar.MONTH,0);
 cal.set(Calendar.YEAR,2012);

 SimpleDateFormat sdf=new SimpleDateFormat("EEEE");
 System.out.println(sdf.format(cal.getTime()));

从那里,您可以看到int是否等于Calendar.SUNDAY、Calendar.MONDAY等。

您可以创建一个包含任意日期的
日历,然后执行
设置(Calendar.DAY/u/u MONTH,1)
以获得一个月的第一天

     Calendar cal = Calendar.getInstance();
     cal.set(Calendar.DATE, 25);
     cal.set(Calendar.MONTH, Calendar.JANUARY);
     cal.set(Calendar.YEAR, 2012);

     cal.set(Calendar.DAY_OF_MONTH, 1);
     Date firstDayOfMonth = cal.getTime();  

     DateFormat sdf = new SimpleDateFormat("EEEEEEEE");   
     System.out.println("First Day of Month: " + sdf.format(firstDayOfMonth));  

要获取当前月份的第一个日期,请使用
java.util.Calendar
。首先获取它的一个实例,并将字段
Calendar.DAY\u of\u MONTH
设置为该月的第一个日期。由于任何月份的第一天都是1,因此在这里可以使用1来代替
cal.getActualMinimum(Calendar.day\u of\u month)

private Date getFirstDateOfCurrentMonth() {
  Calendar cal = Calendar.getInstance();
  cal.set(Calendar.DAY_OF_MONTH, cal.getActualMinimum(Calendar.DAY_OF_MONTH));
  return cal.getTime();
}

在Java8中,可以使用临时调整器:

这是一个例子:

import java.time.DayOfWeek;
import java.time.LocalDate;
import java.time.temporal.TemporalAdjusters;

/**
 * Dates in Java8
 *
 */
public class App {
    public static void main(String[] args) {
        LocalDate localDate = LocalDate.now();
        System.out.println("Day of Month: " + localDate.getDayOfMonth());
        System.out.println("Month: " + localDate.getMonth());
        System.out.println("Year: " + localDate.getYear());

        System.out.printf("first day of Month: %s%n",
                localDate.with(TemporalAdjusters.firstDayOfMonth()));
        System.out.printf("first Monday of Month: %s%n", localDate
                .with(TemporalAdjusters.firstInMonth(DayOfWeek.MONDAY)));
        System.out.printf("last day of Month: %s%n",
                localDate.with(TemporalAdjusters.lastDayOfMonth()));
        System.out.printf("first day of next Month: %s%n",
                localDate.with(TemporalAdjusters.firstDayOfNextMonth()));
        System.out.printf("first day of next Year: %s%n",
                localDate.with(TemporalAdjusters.firstDayOfNextYear()));
        System.out.printf("first day of Year: %s%n",
                localDate.with(TemporalAdjusters.firstDayOfYear()));

        LocalDate tomorrow = localDate.plusDays(1);
        System.out.println("Day of Month: " + tomorrow.getDayOfMonth());
        System.out.println("Month: " + tomorrow.getMonth());
        System.out.println("Year: " + tomorrow.getYear());
    }

}
结果将是:

Day of Month: 16
Month: MAY
Year: 2014
first day of Month: 2014-05-01
first Monday of Month: 2014-05-05
last day of Month: 2014-05-31
first day of next Month: 2014-06-01
first day of next Year: 2015-01-01
first day of Year: 2014-01-01
Last in Month Tuesday: 2014-05-27
Day of Month: 17
Month: MAY
Year: 2014
java.time 由于Java8,我们还可以使用类来创建具有指定日期(第一天、最后一天)的对象。然后我们可以简单地将这些日期转换为()并读取其属性

YearMonth ym = YearMonth.of(2012, 1);

String firstDay = ym.atDay(1).getDayOfWeek().name();
String lastDay = ym.atEndOfMonth().getDayOfWeek().name();

System.out.println(firstDay);
System.out.println(lastDay);
结果:

周日
星期二
java.time,软编码 Pshemo编写的代码既好又聪明,但很难用英语编码。让我们尝试一下,允许本地化。

ZoneId zoneId = ZoneId.of( "America/Montreal" ); // Time zone is crucial to determining a date.
YearMonth yearMonth = YearMonth.now( zoneId );
LocalDate firstOfMonth = yearMonth.atDay( 1 );
格式化程序 生成该文档的文本表示。在这种情况下,我们指定一个所需的。如果省略,则隐式应用JVM的当前默认区域设置;最好指定显式区域设置

DateTimeFormatter formatter = DateTimeFormatter.ofPattern( "EEEE" ).withZone( zoneId ).withLocale( Locale.CANADA_FRENCH );  // Exactly four 'E' letters means full form. http://docs.oracle.com/javase/8/docs/api/java/time/format/TextStyle.html#FULL
String output = formatter.format( firstOfMonth );
转储到控制台

System.out.println( "output: " + output );
跑步的时候

萨梅迪

DayOfWeek
Enum 另一种方法是使用枚举。此枚举包括一种方法,在该方法中,您可以同时指定(全名与缩写)和
区域设置

DayOfWeek dayOfWeek = firstOfMonth.getDayOfWeek() ;
String output = dayOfWeek.getDisplayName( TextStyle.FULL_STANDALONE  , Locale.CANADA_FRENCH ) ;
TemporalAdjuster
在Java8中,您可以使用新的和API

为了达到梦寐以求的结果,尝试以下方法。它打印给定日期的名称

import java.time.*;
导入java.time.temporal.*;
公共班机{
公共静态void main(字符串[]args){
LocalDate l=LocalDate.now().with(TemporalAdjusters.firstDayOfMonth());
System.out.println(l.getDayOfWeek());
}
}
说明:

  • 现在提供当前日期
  • 通过使用
调用
,可以传递一个消息,它是修改时态对象的关键工具
  • getDayOfWeek
    获取星期几字段,该字段是枚举
    DayOfWeek
    。 这包括值的文本名称

  • TemporalAdjuster
    有一个兄弟类,名为,它包含关于调整的静态方法,就像您正在寻找的方法一样,
    firstDayOfMonth

    创建日期,然后从它(格式)搜索中检索日期,我的好兄弟。既有糟糕的方式,也有乔达时间方式。今天巧也问了。点击率高。@RanRag它就在右边的“相关”标题下。哦,是的,对不起,我不知道我为什么要写那个评论。我想我已经为这一天做了太多的编码。这对我有帮助:注意,如果日历对象在过去被设置为特定的月份,您将需要
    cal.getActualMinimum
    。信息丰富,但您并没有完全结束它——问题询问了一天的名称。
    DayOfWeek dayOfWeek = firstOfMonth.getDayOfWeek() ;
    String output = dayOfWeek.getDisplayName( TextStyle.FULL_STANDALONE  , Locale.CANADA_FRENCH ) ;