Java Dateformat——我可以将输入与某些格式进行比较并根据匹配的格式解析输入吗?

发布于 2024-12-06 08:28:13 字数 149 浏览 1 评论 0原文

例如:

用户可以输入 01/23/1983 或 1/23/1983

我如何使用 DateFormat 编写两种不同类型的格式,例如 (MM/DD/YYYY) 和 (M/DD/YYYY) 并比较它们到实际日期来查看哪一个与日期匹配,以便我可以成功解析它?

For example:

A user can enter 01/23/1983 or 1/23/1983

How would I use DateFormat to write up two different kinds of formats like (MM/DD/YYYY) and (M/DD/YYYY) and compare them to the actual date to see which one matches the date so I could parse it successfully?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

甜妞爱困 2024-12-13 08:28:13

处理多种输入格式时的常见解决方案是循环尝试一系列预期格式,直到一个成功或全部失败。例如,

public Date parseDate(List<DateFormat> formats, String text) {
    for(DateFormat fmt : formats) {
        try {
          return fmt.parse(inputDate);
        } catch (ParseException ex) {}
    }
    return null;
}

List<DateFormat> formats = Arrays.asList(new SimpleDateFormat("MM/dd/yyyy"));
Date d1 = parseDate(formats, "01/23/1983");
Date d2 = parseDate(formats, "1/23/1983");

A common solution when dealing with multiple input formats is to try a series of expected formats in a loop until one succeeds, or all fails. E.g.,

public Date parseDate(List<DateFormat> formats, String text) {
    for(DateFormat fmt : formats) {
        try {
          return fmt.parse(inputDate);
        } catch (ParseException ex) {}
    }
    return null;
}

List<DateFormat> formats = Arrays.asList(new SimpleDateFormat("MM/dd/yyyy"));
Date d1 = parseDate(formats, "01/23/1983");
Date d2 = parseDate(formats, "1/23/1983");
纵情客 2024-12-13 08:28:13

因为 Johan 发布了错误的解决方案,所以我觉得有必要发布正确的解决方案。 "MM/dd/yyyy" 将格式化您的两个测试字符串:

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class DateFormatTest {
   public static void main(String[] args) {
      String[] tests = {"01/23/1983", "1/23/1983", "1/3/1983"};

      String formatString = "MM/dd/yyyy";

      SimpleDateFormat sdf = new SimpleDateFormat(formatString);

      for (String test : tests) {
         Date date = null;
         try {
            date = sdf.parse(test);
         } catch (ParseException e) {
            e.printStackTrace();
         }
         System.out.println(date);
      }
   }
}

Because Johan posted an incorrect solution, I feel obliged to post the correct one. "MM/dd/yyyy" will format both of your test Strings:

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class DateFormatTest {
   public static void main(String[] args) {
      String[] tests = {"01/23/1983", "1/23/1983", "1/3/1983"};

      String formatString = "MM/dd/yyyy";

      SimpleDateFormat sdf = new SimpleDateFormat(formatString);

      for (String test : tests) {
         Date date = null;
         try {
            date = sdf.parse(test);
         } catch (ParseException e) {
            e.printStackTrace();
         }
         System.out.println(date);
      }
   }
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文