java - 如何只允许传递特定类型的格式化字符串?
问题描述
我需要确保用户输入以下格式的日期:mm/dd/yyy
我尝试使用一种简单的方法来验证给定的参数是否不为空或不为空,以检查它是否与所需的格式匹配,如果是,则将其设置为新日期。
public void setDate(String dateIn) {
if ((dateIn != null) && !(dateIn.equals(""))) {
if (dateIn.equals("%2d" + "/" + "%2d" + "/" + "%4d")) {
validDate = dateIn;
}
}
}
问题出在我的第二个 if 语句中,我只需要弄清楚如何使该方法获取日、月和年的数字。
解决方案
只需尝试解析日期。我正在使用java.time
Java 8 中引入的“新”api。这个 api 已经在 JDK 中经过了彻底的测试,并且是可行的方法(通常尝试自己做最少的工作,很有可能你有一个之前遇到的问题):
try {
DateTimeFormatter.ofPattern("MM/dd/yyyy").parse(dateIn);
// valid date
} catch(DateTimeParseException e) {
// invalid date
}
推荐阅读
- python-3.x - 如何以任何顺序查找pandas数据框中的一对列与对的交集?
- swift - Swift 中的 macOS 警报窗口
- python-3.x - 如何从字符串中提取字符串然后将字符串转换为列表并仅从列表中获取特定值?
- java - 连接安全 Websocket 时连接中止
- reactjs - React native:标签栏按钮“OnPress”在标签栏范围之外不起作用
- raspberry-pi - 触摸屏上 Kiosk Chromium 中的纵向模式
- python - 如何为我训练有素的机器学习模型提供输入以预测输出?
- python - “NoneType”类型的对象在合并排序中没有 len()
- php - 我应该将 redis GET/SET 放在模型中吗?
- python - 从零开始支持向量机