【问题标题】:Formatting date and time inputs into Date object将日期和时间输入格式化为 Date 对象
【发布时间】:2014-01-28 03:46:35
【问题描述】:

客户端使用 HTML,服务器端使用 JAVA,我试图将 两个 文本输入转换为 java 中的 Date 对象。 我的第一个输入应该以 DD/MM/YYYY 格式保存日期 我的第二个应该有时间 HH:MM 格式化。

我尝试的是对两者都使用输入 type="text",但我无法在服务器端正确形成对象。

您能否为我提供一个正确执行此操作的简单示例? 请忽略任何验证,当然,您可以假设我的主要问题是解析本身。

【问题讨论】:

  • 这是一个 Java 问题吗?还是你想要 javascript?
  • 我已经更新,Java 在服务器端。
  • 通过SimpleDateFormat解析它们
  • 在将它们结合起来并只保留单个 Date 对象时,你是怎么做到的?
  • 抓取它们,将数据连接成字符串或其他内容,然后根据您预先指定的特定格式解析它们,该格式与您从两个值创建的字符串的模式相匹配。有对模式的引用:here 检查示例部分以获取包含日期和时间的实际示例。

标签: java html date input


【解决方案1】:

您可以像这样使用DateFormat(甚至是SimpleDateFormat)来做到这一点

private static String DATE_PART = "dd/MM/yyyy";
private static String HOUR_PART = "HH:mm";
private static java.text.DateFormat FORMAT = 
    new java.text.SimpleDateFormat(DATE_PART + " " + HOUR_PART);
private static java.text.DateFormat HOUR_FORMAT = 
    new java.text.SimpleDateFormat(HOUR_PART);
private static java.text.DateFormat DATE_FORMAT = 
    new java.text.SimpleDateFormat(DATE_PART);

public static Date fromStrings(String date, String time) {
    StringBuilder sb = new StringBuilder(date);
    sb.append(" ").append(time);
    try {
        return FORMAT.parse(sb.toString());
    } catch (ParseException e) {
        e.printStackTrace();
    }
    return null;
}
public static void main(String[] args) {
    String date ="09/01/2014";
    String time ="16:05";
    java.util.Date dt = fromStrings(date, time);
    System.out.println(dt);
    System.out.println(DATE_FORMAT.format(dt));
    System.out.println(HOUR_FORMAT.format(dt));
}

哪些输出

Thu Jan 09 09:28:00 EST 2014
09/01/2014
16:05

【讨论】:

  • 嗯,有一个小错误,我尝试了 DD/MM/YYYY 和 HH:MM 而不是你的模式,并且在使用 fromString 时,我得到了一些与我预期不同的东西
  • 再次阅读format(在该链接中有记录)。“MM”是一年中的月份,“mm”是一天中的分钟(并且大写很重要)。
  • 所以它可能与您的解决方案无关,但与我的理解有关。我使用了“09/01/2014”和“16:05”并收到了更正的“2014-01-09T16:05:00+02:00”对象。现在,在尝试格式化时,我使用了: new SimpleDateFormat("dd/MM/yyyy HH:mm").format(date);但我收到的结果是:09/01/2014 16:01,不确定为什么 01 出现在末尾。
  • 它适用于我 - String date ="09/01/2014";String time ="16:05";java.util.Date dt = fromStrings(date, time); 输出 Thu Jan 09 16:05:00 EST 2014
  • 你的逻辑是正确的,但是在我得到一个 Date 对象之后,我试图使用 SimpleDateFormat 将它串回一个单独的表单。我错过了什么吗?
【解决方案2】:
String date = "dd/MM/yyyy"; // your date value from user input
String hour = "HH:mm"; // your hour value from user input    

try {
    DateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy HH:mm");

    String tempDate = date + " " + hour;
    Date result = dateFormat.parse(tempDate);
    } catch (ParseException e) {
        e.printStackTrace();
    }

如果您愿意,可以将其提取到方法中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-20
    • 2023-04-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多