问题描述
如何在 Java 中查找 6 月 1 日是一周中的哪一天?
解决方法
使用 java.util.Date
(传统时间/日期类):
Date date=new Date(); // today
Date date = new Date(2021,06,23); // custom
Calendar c = Calendar.getInstance();
c.setTime(date);
int dayOfWeek = c.get(Calendar.DAY_OF_WEEK); // 3
String dayWeekText = new SimpleDateFormat("EEEE").format(date); //TUESDAY
使用 java.time.LocalDate
:
LocalDate localDate = LocalDate.of(2021,23); // custom
LocalDate localDate = LocalDate.now(); // today
java.time.DayOfWeek dayOfWeek = localDate.getDayOfWeek();
dayOfWeek.getValue(); // 4
dayOfWeek.toString(); // WEDNESDAY
,
对于您希望星期几为 String
的情况,您可以使用以下示例中的代码:
public static void main(String[] args) {
// provide the date (alternatively,parse it from a String)
LocalDate firstOfJune2021 = LocalDate.of(2021,6,1);
// then get the day of week by means of a DateTimeFormatter
String dayOfWeek = firstOfJune2021.format(
DateTimeFormatter.ofPattern("EEEE",Locale.ENGLISH)
);
// as an alternative,you can get it by chain-calling some methods
String altDayOfWeek = firstOfJune2021.getDayOfWeek()
.getDisplayName(TextStyle.FULL,Locale.ENGLISH);
// print the results
System.out.println(firstOfJune2021 + " was a " + dayOfWeek);
System.out.println(firstOfJune2021 + " was a " + altDayOfWeek);
}
此代码产生以下输出:
2021-06-01 was a Tuesday
2021-06-01 was a Tuesday
有一个enum DayOfWeek
,它实际上是LocalDate.getDayOfWeek()
的结果类型。
如果您想使用 int
、enum
或 String
表示之类的值...
这取决于您使用的 Java 版本和类型。从 Java 8 开始,使用 LocalDate
确定星期几的简单方法如下所示:
LocalDate date = LocalDate.of(2021,1);
System.out.println(date.getDayOfWeek().getValue());
返回值从 1(星期一)到 7(星期日)编号。
可以在 How to determine day of week on Baeldung 中找到对不同方法的很好的概述。