У меня есть следующий метод проверки проверки формата даты.Формат даты, подтверждающий
public static void main(String[] args) {
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSSSSXXX");
String dateString = df.format(new Date());
Validator validator = new Validator();
System.out.println(dateString+" = "+validator.isTimesStampValid(dateString));
String given = "2016-09-28T14:50:31.456449+06:00";
System.out.println(given+" = "+validator.isTimesStampValid(given));
}
Я получил результаты, следующие,
2016-11-21T12:18:18.000698+05:30 = false
2016-09-28T14:50:31.456449+06:00 = true
Мой валидация формат регулярных выражений это, ^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(\.\d+)?(\+|-)\d{2}:\d{2}$
Я не могу понять, почему я получаю два различных результата после проверки. По моему мнению, я должен получить тот же результат для значений given
и dateString
. Может ли пожалуйста, объясните, почему я получаю это ...
Я бы ожидал * both *, чтобы вернуть 'false', так как в вашем регулярном выражении отсутствует' -' между частями даты. --- А что означает '(\ + |)', которое должно совпадать? «+» Или ничего? Но что, если часовой пояс '-03: 00'? – Andreas
Ahhh Похоже, ваше регулярное выражение имеет «SOFT HYPHEN» (U + 00AD) вместо обычных знаков '-' минус. К сожалению !! Голосование закрывается как опечатка. – Andreas
+ Андреас. Попробуйте использовать: \ d {4} - \ d {2} - \ d {2} T \ d {2}: \ d {2}: \ d {2} (\. \ D +)? (\ + \ \ -) \ d {2}: \ d {2} – aquila