Java Autocomplete/Format 来自 MM-DD 输入的日期
Java Autocomplete/Format Date from MM-DD input
有没有办法自动完成 YYYY-MM-DD 格式的日期,其中输入字段只需要 MM-DD。
年份将是当前年份,除非月份和日期是过去的。
示例:
输入“06-28”将输出 2017-06-28
如果日期是过去的,
输入“04-30”输出2018-04-30
代码将写成HTML或Java
感谢您的帮助,如有遗漏,请见谅。
为什么不写一个简单的函数来检查当前日期并根据它自动完成年份呢?
这里是 java.time
类 excel.
public static LocalDate autocomplete(String mmdd) {
ZoneId clientTimeZone = ZoneId.systemDefault();
LocalDate today = LocalDate.now(clientTimeZone);
MonthDay md = MonthDay.parse(mmdd, DateTimeFormatter.ofPattern("MM-dd"));
Year y = Year.from(today);
if (md.isBefore(MonthDay.from(today))) {
// in the past; use next year
y = y.plusYears(1);
}
return y.atMonthDay(md);
}
请注意对时区的依赖。请三思而后行,您应该使用哪个区域。
如果您需要结果作为 String
,只需使用 toString()
。
极端情况:该方法将接受 02-29
作为有效输入,如果所选年份不是闰年,该方法将自动完成日期为 2 月 28 日。您可能需要将其修改为拒绝 02-29
除非明年 2 月有 29 天。
有没有办法自动完成 YYYY-MM-DD 格式的日期,其中输入字段只需要 MM-DD。
年份将是当前年份,除非月份和日期是过去的。
示例:
输入“06-28”将输出 2017-06-28
如果日期是过去的,
输入“04-30”输出2018-04-30
代码将写成HTML或Java
感谢您的帮助,如有遗漏,请见谅。
为什么不写一个简单的函数来检查当前日期并根据它自动完成年份呢?
这里是 java.time
类 excel.
public static LocalDate autocomplete(String mmdd) {
ZoneId clientTimeZone = ZoneId.systemDefault();
LocalDate today = LocalDate.now(clientTimeZone);
MonthDay md = MonthDay.parse(mmdd, DateTimeFormatter.ofPattern("MM-dd"));
Year y = Year.from(today);
if (md.isBefore(MonthDay.from(today))) {
// in the past; use next year
y = y.plusYears(1);
}
return y.atMonthDay(md);
}
请注意对时区的依赖。请三思而后行,您应该使用哪个区域。
如果您需要结果作为 String
,只需使用 toString()
。
极端情况:该方法将接受 02-29
作为有效输入,如果所选年份不是闰年,该方法将自动完成日期为 2 月 28 日。您可能需要将其修改为拒绝 02-29
除非明年 2 月有 29 天。