对于2014
年,我想显示4
和2029 -> 9
我知道如何格式化4位=> yyyy
和两位=> yy
但是我无法理解,如何使用最后一个数字
DateTimeFormatter.ofPattern("yMMdd"); //returns 20151020. I want just 51020
答案 0 :(得分:5)
您可以通过构建自己的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之间)。
答案 1 :(得分:1)
使用DateTimeFormatter是不可能的。检查此链接:
https://msdn.microsoft.com/en-us/library/8kb3ddd4(v=vs.110).aspx
“y”格式化程序应将年份从0到99
您应该自己提取最后一位数并创建字符串。
答案 2 :(得分:0)
DateTimeFormatter
不太可能支持这种不寻常的要求。如果您将年份作为整数类型,则使用
year % 10
提取最右边的数字。
答案 3 :(得分:0)
String sb = new SimpleDateFormat("yMMdd").format(new Date());
System.out.println(sb); // prints 151020
sb = sb.substring(1, sb.length()); //remove 1st char
System.out.println(sb); //prints 51020