如何在格式化

时间:2017-04-12 20:58:20

标签: java localization date-formatting java-time

使用新的Java 8 java.time API,我需要转换LocalDate并获取月和日的全名。像三月(不是三月)和周一(不是周一)。 3月13日星期五应格式化为3月13日星期五..不是3月13日星期五。

4 个答案:

答案 0 :(得分:10)

您要查找的字符串为MMMM

来源:DateTimeFormatter Javadoc

答案 1 :(得分:5)

TL;博士

使用自动本地化。无需指定格式化模式。

localDate.format( 
    DateTimeFormatter.ofLocalizedDate( FormatStyle.FULL )
                     .withLocale( Locale.UK )
)
  

2017年1月23日星期一

LocalDate
.of( 2017 , Month.JANUARY , 23 )
.getMonth()
.getDisplayName(
    TextStyle.FULL , 
    Locale.CANADA_FRENCH 
)
  

维耶

从字面上理解你的标题,我会使用方便的Month枚举。

LocalDate ld = LocalDate.of( 2017 , Month.JANUARY , 23 );
Month month = ld.getMonth() ;  // Returns a `Month` object, whereas `getMonthValue` returns an integer month number (1-12).

让java.time完成自动本地化的工作。要进行本地化,请指定:

  • TextStyle确定字符串的长度或缩写。
  • Locale确定(a)翻译日期名称,月份名称等的人类语言,以及(b)决定缩写,大写,标点符号,分隔符等问题的文化规范

例如:

String output = month.getDisplayName( TextStyle.FULL , Locale.CANADA_FRENCH ) ;  // Or Locale.US, Locale.KOREA, etc.
  

维耶

日期

如果您想要对整个日期进行本地化,请让DateTimeFormatter完成工作。在这里,我们使用FormatStyle而不是TextStyle

示例:

Locale l = Locale.CANADA_FRENCH ;  // Or Locale.US, Locale.KOREA, etc.
DateTimeFormatter f = DateTimeFormatter.ofLocalizedDate( FormatStyle.FULL )
                                       .withLocale( l ) ;
String output = ld.format( f );
  

dimanche 23 janvier 2107

关于 java.time

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

现在位于Joda-Timemaintenance mode项目建议迁移到java.time类。

要了解详情,请参阅Oracle Tutorial。并搜索Stack Overflow以获取许多示例和解释。规范是JSR 310

您可以直接与数据库交换 java.time 对象。使用符合JDBC driver或更高版本的JDBC 4.2。不需要字符串,不需要java.sql.*类。

从哪里获取java.time类?

ThreeTen-Extra项目使用其他类扩展java.time。该项目是未来可能添加到java.time的试验场。您可以在此处找到一些有用的课程,例如IntervalYearWeekYearQuartermore

答案 2 :(得分:2)

是。现在可以做到。

LocalDate dd = new LocalDate();  //pass in a date value or params(yyyy,mm)

String ss = dd.monthOfYear.getAsText(); // will give the full name of the month
String sh = dd.monthOfYear.getAsShortText(); // shortform

答案 3 :(得分:1)

import java.time.LocalDate;

只需使用getDayOfWeek()

LocalDate.of(year, month, day).getDayOfWeek().name()

您可以将其用作

public static String dayName(int month, int day, int year) {

    return LocalDate.of(year, month, day).getDayOfWeek().name();

}