java - 如何只允许传递特定类型的格式化字符串?

标签 java string

我需要确保用户输入以下格式的日期:mm/dd/yyy

我尝试使用一种简单的方法来验证给定的参数是否为 null 或空,检查它是否与所需的格式匹配,如果是,则将其设置为新日期。

public void setDate(String dateIn) {

  if ((dateIn != null) && !(dateIn.equals(""))) {
    if (dateIn.equals("%2d" + "/" + "%2d" + "/" + "%4d")) {
      validDate = dateIn;
    }
  }
}

问题出在我的第二个 if 语句中,我只需要弄清楚如何使该方法采用日、月和年的数字。

最佳答案

尝试解析日期。我正在使用 Java 8 中引入的"new"java.time api。该 api 已在 JDK 中经过彻底测试,并且是可行的方法(通常尝试自己做最少的工作,您很有可能遇到以前遇到过的问题):

try {
    DateTimeFormatter.ofPattern("MM/dd/yyyy").parse(dateIn);
    // valid date
} catch(DateTimeParseException e) {
    // invalid date
}

关于java - 如何只允许传递特定类型的格式化字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55476936/

相关文章:

java - 将变量名传递给 GWT 的 JSNI

java - 上传文档并显示文档状态 - Selenium WebDriver - Java

c++ - 使用字符串文字初始化时,std::strings 是否以 '\0' 结尾?

C++ 字符串操作给我奇怪/不一致/错误的结果

string - 在 go 中使用从 []byte 到 string 的不安全转换可能产生的后果是什么?

java - 如何在 Java 中检查两个句子之间删除的单词

java - Vector2 类的旋转问题

Java Web 服务自定义返回类型

java - 从文本文件读取时如何分割

javascript - JavaScript 中的“unraw”字符串