【发布时间】:2018-05-10 12:21:18
【问题描述】:
我需要检查用户是否至少 13 岁。 问题是从 PickerComponent 给它的 Validator 的对象是一个字符串,而不是一个日期(如我所料)。 该字符串是根据我的语言环境(在模拟器中)格式化的,所以对于“2003 年 5 月 9 日”,我得到字符串“09/05/03”(我也很惊讶年份只用两位数字表示四)。
所以...我尝试了以下代码,但它不起作用(在我的语言环境中)。我需要一个适用于 Date PickerComponent 的验证器(它也独立于语言环境):
PickerComponent date = PickerComponent.createDate(new Date()).label("Data di nascita").errorMessage("Hai almeno 13 anni?");
Validator validator = new Validator();
validator.addConstraint(date, new Constraint() {
@Override
public boolean isValid(Object value) {
boolean res = false;
if (value instanceof String) {
String inputDate = (String) value;
Log.p("-----------------");
Log.p("Inserted birthday date: " + inputDate);
Log.p("-----------------");
try {
Calendar birthday = Calendar.getInstance();
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("dd/mm/yy");
birthday.setTime(simpleDateFormat.parse(inputDate));
Calendar nowLess13years = Calendar.getInstance();
nowLess13years.setTime(new Date());
nowLess13years.add(Calendar.YEAR, -13);
if (birthday.before(nowLess13years) || birthday.equals(nowLess13years)) {
res = true;
}
} catch (ParseException ex) {
Log.p("Cannot parse the date");
}
}
return res;
}
@Override
public String getDefaultFailMessage() {
return "You must be at least 13 years old";
}
});
【问题讨论】:
标签: codenameone