DayOfWeek::getDisplayName() 是否有反函数
Is there an inverse function of DayOfWeek::getDisplayName()
我需要一个转换器,可以将 DayOfWeek
转换为 String
,并在给定一些 Locale
和 TextStyle
的情况下反过来转换。
一种方法是直接的:
public String getAsString(DayOfWeek day, TextStyle style, Locale locale){
return day.getDisplayName(style, locale);
}
另一方面,我没有在java.time
包中找到任何有用的方法。我正在寻找 LocalDate::parse(CharSequence text, DateTimeFormatter formatter)
之类的东西,但 DayOfWeek
.
DayOfWeek
没有 parse
方法,但您可以构建一个 DateTimeFormatter
并将其与 DayOfWeek::from
一起使用来解析 String
:
import java.time.temporal.ChronoField;
import java.time.format.DateTimeFormatter;
import java.time.format.DateTimeFormatterBuilder;
public DayOfWeek parseFromString(String str, TextStyle style, Locale locale) {
DateTimeFormatter formatter = new DateTimeFormatterBuilder()
// Day of the week field, using the same TextStyle
.appendText(ChronoField.DAY_OF_WEEK, style)
// use the same locale
.toFormatter(locale);
// parse returns a TemporalAccessor, DayOfWeek::from converts it to a DayOfWeek object
return formatter.parse(str, DayOfWeek::from);
}
这样,您可以从您创建的 String
中获取 DayOfWeek
:
String dayOfWeekString = getAsString(DayOfWeek.MONDAY, TextStyle.FULL, Locale.US);
System.out.println(dayOfWeekString); // monday
DayOfWeek dayOfWeek = parseFromString(dayOfWeekString, TextStyle.FULL, Locale.US);
System.out.println(dayOfWeek); // MONDAY (return of DayOfWeek.toString())
我需要一个转换器,可以将 DayOfWeek
转换为 String
,并在给定一些 Locale
和 TextStyle
的情况下反过来转换。
一种方法是直接的:
public String getAsString(DayOfWeek day, TextStyle style, Locale locale){
return day.getDisplayName(style, locale);
}
另一方面,我没有在java.time
包中找到任何有用的方法。我正在寻找 LocalDate::parse(CharSequence text, DateTimeFormatter formatter)
之类的东西,但 DayOfWeek
.
DayOfWeek
没有 parse
方法,但您可以构建一个 DateTimeFormatter
并将其与 DayOfWeek::from
一起使用来解析 String
:
import java.time.temporal.ChronoField;
import java.time.format.DateTimeFormatter;
import java.time.format.DateTimeFormatterBuilder;
public DayOfWeek parseFromString(String str, TextStyle style, Locale locale) {
DateTimeFormatter formatter = new DateTimeFormatterBuilder()
// Day of the week field, using the same TextStyle
.appendText(ChronoField.DAY_OF_WEEK, style)
// use the same locale
.toFormatter(locale);
// parse returns a TemporalAccessor, DayOfWeek::from converts it to a DayOfWeek object
return formatter.parse(str, DayOfWeek::from);
}
这样,您可以从您创建的 String
中获取 DayOfWeek
:
String dayOfWeekString = getAsString(DayOfWeek.MONDAY, TextStyle.FULL, Locale.US);
System.out.println(dayOfWeekString); // monday
DayOfWeek dayOfWeek = parseFromString(dayOfWeekString, TextStyle.FULL, Locale.US);
System.out.println(dayOfWeek); // MONDAY (return of DayOfWeek.toString())