【发布时间】:2015-09-25 12:51:06
【问题描述】:
用户将以不同的模式向我的应用程序输入日期。对于 2 位数年份,他还必须确定基准日期。
示例:
模式 = yy-MM-dd
枢轴日期 = 70(我以编程方式添加当前千年和上个世纪以获得更多动态 => 1970)
69-04-22 变为 2069-04-22
70-04-22 变为 1970-04 -22
如this answer 中所述,当日期模式(此处为ddMMyy)已知时,很容易构建DateTimeFormatter。
但是由于用户输入了模式,我不确定如何正确构建DateTimeFormatterBuilder。我不能硬编码。
我是否必须自己解析模式并以正确的顺序调用appendPattern() 和appendValueReduced()?还是有内置的解决方案?
【问题讨论】:
-
不确定您的问题出在哪里。假设您没有基准日期问题,并且用户刚刚输入了模式。你知道那时你会做什么吗?还是您的问题是您不信任用户输入正确的模式?如果他的模式是有效的,添加
appendValueReduced有什么问题? -
假设输入的模式是有效的。问题是
java.time在将 2 位数年份转换为 4 位数时采用当前世纪(2000 年)。但我想让用户决定选择上世纪(1900)或当前世纪(2000)的哪一年。 -
是的,但我不明白给定答案有什么问题。
new DateTimeFormatterBuilder().appendPattern(userPattern).appendValueReduced(...)怎么了? -
这行不通,因为对于我的模式,它必须是
new DateTimeFormatterBuilder().appendValueReduced(...).appendPattern(userPattern)。所以它们必须以另一个顺序调用,userPattern必须被编辑为 -MM-dd。