java - DateTimeFormatter 的最后一位年份

标签 java date java-8 java-time

2014 我想显示 42029 -> 9

我知道如何使用 4 位数字 => yyyy 和两位数 => yy

但是我不明白,如何用最后一位数来做

DateTimeFormatter.ofPattern("yMMdd"); //returns 20151020. I want just 51020

最佳答案

您可以通过构建自己的 DateTimeFormatter 来做到这一点(并且不依赖于计算如果您的模式发生变化可能会失败的子字符串),如下所示:

DateTimeFormatter formatter = new DateTimeFormatterBuilder()
                                        .appendValueReduced(ChronoField.YEAR, 1, 1, 0)
                                        .appendPattern("MMdd")
                                        .toFormatter();
System.out.println(LocalDate.now().format(formatter)); // prints 51020
System.out.println(LocalDate.of(2029, 1, 1).format(formatter)); // prints 90101

但是,此格式化程序只能用于格式化LocalDate,不能用于解析LocalDate

appendValueReduced用于格式化时间字段的缩减值。在这种情况下,我们附加一个固定宽度的值 1 并表示基值为 0(这样,有效值将介于 0 和 9 之间)。

关于java - DateTimeFormatter 的最后一位年份,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33238082/

相关文章:

java - 使用流 java 8 从列表中搜索包含寄存器内部分文本的寄存器

java - 为什么jstack无法获取Java进程进程的threadump?

完成主要代码后出现 java.nio.channels.ClosedSelectorException

java - Eclipse 的声明 View 有什么用?

Javascript 日期 : what is the best way to deal with Daylight Savings Time?

jquery datepicker默认日期

javascript - $昨天 = $今天.setDate($today.getDate() - 1);不显示昨天的日期

Java 将树添加到 ArrayList

java - 多次运行 TestNg 套件

java - 类型与 lambda 不匹配