相关疑难解决方法(0)

以MM/DD/YY格式解析日期并将其调整为当前/上个世纪的最佳方法是什么?

我们的一位客户希望能够输入年份组件只有2位数的日期.该日期将在过去,因此如果2位数年份在当前年份之后,我们希望它在上个世纪工作,但如果2位数年份等于或小于当前年份,则工作在本世纪.

截至今天10/30/2008

01/01/01 = 01/01/2001

01/01/09 = 01/01/1909

这是一个奇怪的要求,我解决了这个问题,我只是不喜欢我的解决方案.感觉有更好的方法来做到这一点.

谢谢您的帮助.

public static String stupidDate(String dateString)
{
    String twoDigitYear = StringUtils.right(dateString, 2);
    String newDate = StringUtils.left(dateString, dateString.length() - 2);
    int year = NumberUtils.toInt(twoDigitYear);
    Calendar c = GregorianCalendar.getInstance();
    int centuryInt = c.get(Calendar.YEAR) - year;
    newDate = newDate + StringUtils.left(Integer.toString(centuryInt), 2) + twoDigitYear;
    return newDate;
}
Run Code Online (Sandbox Code Playgroud)

java date date-format

10
推荐指数
4
解决办法
3万
查看次数

Java 8 DateTimeFormatter两位数18年解析为0018而不是2018年?

使用Java 8,下面的代码将"18"解析为年"0018"而不是"2018".

DateTimeFormatter formatter = DateTimeFormatter.ofPattern("M/d/y");
return LocalDate.parse(date, formatter);
Run Code Online (Sandbox Code Playgroud)

输入日期为"01/05/18".

1)为什么结果是"0018"?难道DateTimeFormatter没有按照80-20规则?

2)如何控制SimpleDateFormat解析为19xx或20xx?谈到SimpleDateFormat.set2DigitYearStart(Date)可以用来修复这一年.有没有类似的东西DateTimeFormatter

我希望"M/d/y"能解析2到4位数年份.

"M/d/yy"抛出4位数的异常并将"01/05/97"解析为"2097-01-05".理想情况下,这应解析为"1997-01-05".

"M/d/yyyy"抛出2位数年份的例外情况.

date-format date-parsing java-8 java-time

9
推荐指数
1
解决办法
4053
查看次数

标签 统计

date-format ×2

date ×1

date-parsing ×1

java ×1

java-8 ×1

java-time ×1