2017-05-08 59 views
-1

有没有办法自动完成YYYY-MM-DD格式的日期,其中输入字段只需要MM-DD。Java自动完成/格式MM-DD输入的日期

除非月和日过去,否则今年将是当年。

实施例:

的输入 “06-28” 将输出2017年6月28日

,如果日期是在过去,

输入 “04-30” 输出2018- 04-30

的代码将被写入HTML或Java

感谢您的帮助和抱歉,如果我失去了一些东西。

+1

当然,这听起来应该是可能的。尽管如此,您所指的是哪种语言并不是很明显。标签和标题之间存在一些混淆。 PHP? Java的? _JavaScript_? (只是猜测你_might_是指基于其他标签的JavaScript而不是Java。) –

+0

感谢您花时间做出回应。明天当我的IT朋友进来工作时,我会编辑这个问题。这是他为我创建的自定义.php网站表单。我会重新提出这个问题或者编辑这个问题来更加简洁。 –

+0

如果日期过去,您如何知道要打印哪一年?为什么打印未来一年? –

回答

2

这就是java.time类擅长的地方。

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日的日期。除非明年2月有29天,否则您可能需要修改它以拒绝02-29

+0

你能告诉我这个代码如何与HTML输入文本框一起工作吗? –

+0

不是我,我很害怕。 @ZachHunter很久以前,这是我的主场(我希望你不是指JavaScript,因为这是不同的)。 –

0

为什么不写一个简单的函数来检查当前日期,并基于该年自动完成?

+0

@ Ethan Gills-写这个函数实际上是我需要帮助的。我的好友为我创建了一个使用日期选择器的HTML事物,但我将输入数千个日期,而日期选择器耗时过长。谢谢 –