一年中的一周由5个工作日组成:星期一、星期二、星期三、星期四和星期五;剩下的两天(星期六和星期日)组成了周末。如果你作为应用程序开发人员处理日期和日历,手动查找一年中每天的工作日名称可能会很繁琐。在本文中,我们将深入探讨使用内置类和API的各种方法,并提供详细的代码示例,适用于初学者和有经验的Java开发人员,为简化与日历相关的任务提供有价值的技巧,即使用Java编程语言显示日历年份中工作日的名称。以下是显示工作日名称的不同方法类型 -
Naïve Method
使用java.text.DateFormatSymbols类
使用java.util.Calendar类
使用 java.time.format.DateTimeFormatter 类
使用 java.util.Date 和 java.text.SimpleDateFormat 类
这是最简单的方法,需要将每个工作日的名称硬编码到一个数组中。然后我们使用for each循环来遍历这个数组并显示它们的名称。
public class Weekdays { public static void main(String[] args) { String[] weekdays = {"Monday", "Tuesday", "Wednesday", "Thursday", "Friday"}; for (String day : weekdays) { System.out.println(day); } } }
Monday Tuesday Wednesday Thursday Friday
Java标准库的java.text包包含java.text类,该类提供了一组由SimpleDateFormat用于根据已建立的模式格式化和解析日期和时间的符号。DateFormatSymbols类提供了用于检索和设置以下日期和时间符号的方法−
月份和日期的名称和缩写
星期几的名称和缩写
年号
AM/PM字符串
时区名称和缩写
DateFormatSymbols默认使用当前默认区域设置的区域特定符号。但是,您可以使用不同的区域设置或自定义符号数组创建DateFormatSymbols的实例,以用于上述任何字段。我们将使用getWeekdays()函数,该函数返回一个星期几名称的数组。
import java.text.DateFormatSymbols; public class Weekdays { public static void main(String[] args) { DateFormatSymbols symbols = new DateFormatSymbols(); String[] weekdays = symbols.getWeekdays(); for (int i = 2; i <= 6; i++) { System.out.println(weekdays[i]); } } }
Monday Tuesday Wednesday Thursday Friday
Java标准库的java.util包包含java.util类,该类提供了一种直观、与地区无关的处理日期和时间的方式。
日历是一个直观的系统,可以以各种方式进行日期和时间操作。它提供了检索或设置日期或时间的各个字段的方法,例如年、月、日、小时、分钟、秒和毫秒;此外,它还允许对这些值进行加减秒的操作。
Calendar是一个抽象类,因此您不能直接创建实例。相反,使用getInstance()静态工厂方法根据当前的时区和区域设置创建一个实例。或者,使用getInstance(TimeZone zone, Locale aLocale)方法根据特定的偏好设置创建一个具有特定时区和区域设置的Calendar实例。
日历提供了几个有用的功能,如时区支持、闰年支持以及字段归一化。
import java.util.Calendar; import java.util.Locale; public class Weekdays { public static void main(String[] args) { Calendar calendar = Calendar.getInstance(); for (int i = Calendar.MONDAY; i <= Calendar.FRIDAY; i++) { calendar.set(Calendar.DAY_OF_WEEK, i); String name = calendar.getDisplayName( Calendar.DAY_OF_WEEK, Calendar.LONG, Locale.getDefault()); System.out.println(name); } } }
Monday Tuesday Wednesday Thursday Friday
Java 8的日期时间API,特别是java.time包,包含一个DateTimeFormatter类,提供灵活且线程安全的日期/时间格式化功能。
DateTimeFormatter是一个用于格式化和解析日期和时间对象的应用程序。它提供了基于不同模式(如仅日期、仅时间或两者都有)创建格式化程序的各种选项。此外,它还支持多个年表,包括ISO日历系统和非ISO日历系统。
DateTimeFormatter可以将本地化的文本(例如月份和日期名称)解析和格式化为表示日期或时间对象中不同字段的模式字母。它支持在这些相同的模式字母中使用年、月、日、小时、分钟、秒(包括其分数)等特定字段。
DateTimeFormatter既是线程安全的,又是不可变的,这意味着您可以在多个线程中重复使用相同的格式化器实例。
import java.time.DayOfWeek; import java.time.format.DateTimeFormatter; import java.time.format.TextStyle; import java.util.Locale; public class Weekdays { public static void main(String[] args) { DateTimeFormatter formatter = DateTimeFormatter.ofPattern("EEEE", Locale.getDefault()); int c=0; for (DayOfWeek day : DayOfWeek.values()) { if(c<5) { String name = day.getDisplayName(TextStyle.FULL, Locale.getDefault()); System.out.println(name); c++; } } } }
Monday Tuesday Wednesday Thursday Friday
Java的标准库提供了两个用于处理日期和时间的类:java.util.Date和java.text.SimpleDateFormat。
Java.util.Date提供了以毫秒精度表示时间的能力,相对于“纪元” - 1970年1月1日00:00:00 GMT。Date提供了用于操作日期和时间值的方法,如获取或设置年、月、日、小时、分钟、秒值;然而,它已经被Java 8中引入的java.time包取代。
Java.text.SimpleDateFormat是一个根据已确定的模式格式化和解析日期和时间的类。它接受一个输入字符串,指定日期应该如何格式化或解析;这个格式字符串由表示日期或时间值中的字段的各种模式字母组成,例如年、月、日、小时、分钟、秒和秒的分数。
SimpleDateFormat不是线程安全的,在多线程环境中使用是不被推荐的。相反,应该使用java.time.format.DateTimeFormatter类来进行日期和时间的格式化和解析。
import java.text.SimpleDateFormat; import java.util.Date; import java.util.Locale; public class Weekdays { public static void main(String[] args) { SimpleDateFormat simpleDF = new SimpleDateFormat("EEEE", Locale.getDefault()); for (int i = 6; i <= 10; i++) { Date date = new Date(); date.setDate(i); String name = simpleDF.format(date); System.out.println(name); } } }
Thursday Friday Saturday Sunday Monday
Java提供了广泛的库,可以轻松地显示一个日历年中从星期一到星期五的工作日。上面展示了六种技术,如果需要在同一年的日历中显示周末日,只需要进行最小的修改。