Java 从月号到月名的时间?

Java 从月号到月名的时间?,java,Java,我只需要把月号改成一个月名 我试着用三个M代替两个,结果显示出错误。 我知道这个问题,但不知道如何解决 DateTimeFormatter formater = DateTimeFormatter.ofPattern("ddMMyyyy"); Person[] people = new Person[parts.length / 4]; int br = 0; for (int i = 0; i < parts.length; i += 4) { LocalDate datum

我只需要把月号改成一个月名

我试着用三个M代替两个,结果显示出错误。 我知道这个问题,但不知道如何解决

DateTimeFormatter formater = DateTimeFormatter.ofPattern("ddMMyyyy");

Person[] people = new Person[parts.length / 4];
int br = 0;
for (int i = 0; i < parts.length; i += 4) {
    LocalDate datum = LocalDate.parse(parts[i + 2], formater);
    people[br++] = new Person(parts[i], parts[i + 1],datum, parts[i + 3]);
}
而不是1988-05-05, 这是1988年5月5日…

试试:

 int month=5;
 String name = java.time.Month.values()[month-1].name();
它还有一个getDisplayName方法:

 String name = java.time.Month.values()[month-1].getDisplayName(TextStyle.FULL, Locale.getDefault());
从命令中删除

  String name =java.time.Month.of(month).getDisplayName(TextStyle.FULL, Locale.getDefault());` 

或者类似的内容

以下内容可用于按您所需的方式格式化:

DateTimeFormatter.ofPattern("yyyy-MM-dd").format(LocalDate.now()) //2019-02-04
DateTimeFormatter.ofPattern("yyyy-MMM-dd").format(LocalDate.now()) //2019-Feb-04
DateTimeFormatter.ofPattern("yyyy-MMMM-dd").format(LocalDate.now()) //2019-February-04

看起来你已经解析了你的日期。要将LocalDate转换为所需的字符串类型,可以使用以下格式化程序:

LocalDate date = LocalDate.of(2018, 1, 1);

DateTimeFormatter out = new DateTimeFormatterBuilder()
    .appendValue(ChronoField.YEAR, 4)
    .appendLiteral('-')
    .appendText(ChronoField.MONTH_OF_YEAR, TextStyle.SHORT)
    .appendLiteral('-')
    .appendValue(ChronoField.DAY_OF_MONTH, 2)
    .toFormatter(Locale.UK); // or your locale

System.out.println(
    out.format(date)
);

LocalDate类还提供了几个getter方法来提取这些值,如下所示:

LocalDate currentDate = LocalDate.of(2019, 02, 04);
(OR)
LocalDate currentDate = LocalDate.now(); // 2019-02-04 

DayOfWeek dayOfWeek = currentDate.getDayOfWeek(); // TUESDAY 
int dom = currentDate.getDayOfMonth(); // 04 
int doy = currentDate.getDayOfYear(); //  35
Month month = currentDate.getMonth(); // FEBRUARY
int year = currentDate.getYear(); // 2019
首先解析日期的字符串表示形式,如下所示:

DateTimeFormatter formater = DateTimeFormatter.ofPattern("ddMMyyyy");
LocalDate datum = LocalDate.parse("04022019", formater);
现在,如果解析成功并且您有一个有效的LocalDate对象, 您可以将其格式化:

String date = datum.format(DateTimeFormatter.ofPattern("yyyy-MMM-dd"));
System.out.println(date);
将打印

2019-Feb-04

你的意见是什么?字符串还是日期?以什么形式?你期望的结果是什么?解析和格式化是两种不同的东西。你可以告诉我们如何创建一个新的人。指挥官是什么样子的?你需要一个月的全名还是前三个字母就足够了?在后一种情况下,只需使用DateTimeFormatter.of模式dd MMM yyyy或任何类似的模式。还有java.time.Month.of它直接将月份作为输入,无需直接访问值数组。它非常有用!我尝试过该方法,但它正在向我打印一条错误消息。主线程java.time.format.DateTimeParseException中的异常:无法在索引2处解析文本“05051988”。这就是它所显示的。您需要解析“05051988”的格式是ddMMyyyy,就像我的答案中的代码一样。如果你这样做,那么就不会有错误。如果您得到一个错误,那么您正在做其他事情,所以张贴您的代码。