【问题标题】:Java Autocomplete/Format Date from MM-DD input来自 MM-DD 输入的 Java 自动完成/格式化日期
【发布时间】:2017-10-07 01:43:21
【问题描述】:

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

除非月份和日期是过去的,否则年份将是当前年份。

例子:

“06-28”的输入将输出 2017-06-28

如果日期是过去,

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

代码可以用 HTML 或 Java 编写

感谢您的帮助,如果我遗漏了什么,我们深表歉意。

【问题讨论】:

  • 当然,听起来应该是可能的。不过,您指的是哪种语言并不是很明显。标签和标题之间存在一些混淆。 php?爪哇? JavaScript? (只是猜测您可能指的是 JavaScript,而不是基于其他标签的 Java。)
  • 感谢您抽出宝贵时间回复。明天当我的 IT 朋友来工作时,我将编辑问题。这是他为我创建的自定义 .php 网站表单。我将重新提出问题或编辑此问题以更简洁。
  • 如果日期是过去,你怎么知道要打印哪一年,为什么要打印未来的一年?
  • @ 不要惊慌 - 语言是 HTML

标签: java date autoformatting


【解决方案1】:

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

【讨论】:

  • 你能告诉我这段代码如何与 HTML 输入文本框一起工作吗?
  • 恐怕不是我。 @ZachHunter 很久以前这是我的家乡(我希望你不是指 JavaScript,因为那是不同的)。
【解决方案2】:

为什么不写一个简单的函数来检查当前日期并根据它自动完成年份?

【讨论】:

  • @ Ethan Gills- 编写函数实际上是我需要帮助的。我的好友为我创建了一个使用日期选择器的 HTML 事物,但我将输入数千个日期,而日期选择器花费的时间太长。谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-12
  • 1970-01-01
  • 1970-01-01
  • 2016-01-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多