Java 从月号到月名的时间?
我只需要把月号改成一个月名 我试着用三个M代替两个,结果显示出错误。 我知道这个问题,但不知道如何解决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
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,就像我的答案中的代码一样。如果你这样做,那么就不会有错误。如果您得到一个错误,那么您正在做其他事情,所以张贴您的代码。