Мне нужно написать функцию validDate () в Java - PullRequest
0 голосов
/ 31 октября 2011

Мне нужна функция для проверки даты с логическим значением. У меня есть строковая переменная, в которой хранится одна дата. Я сохранил формат даты так: «гггг / мм / дд». Мне нужно проверить, является ли эта переменная действительной датой. Если формат даты - true, тогда функция должна возвращать true в java. Но мне нужно что-то. Я не должен использовать для преобразования строки в целое число. Я написал что-то.

public boolean trueDate(String date){
    String[] temp;
    temp = date.split("/");
    String year = temp[0];
    String mounth = temp[1];
    String day = temp[2];

}

Что мне делать?

Ответы [ 5 ]

3 голосов
/ 31 октября 2011

Здесь нет смысла заново изобретать колесо.

Либо используйте java.text.SimpleDateFormat, либо DateTimeFormatter из Joda Time .Укажите соответствующий формат, а затем попытайтесь проанализировать его - если он не выдает исключение, он действителен.

Если это действительно только для домашней работы, то вы должны проанализировать строки какцелые числа - как еще вы собираетесь делать такие вещи, как обработка високосных лет и т. д.?

Вы можете использовать регулярное выражение для выполнения краткой проверки, но для "глубокой" проверки вам будет гораздо лучше разбирать строки- или предпочтительно с использованием существующей библиотеки, как упоминалось ранее.

1 голос
/ 31 октября 2011

Попробуйте использовать SimpleDateFormat.Смотри http://www.dreamincode.net/forums/topic/14886-date-validation-using-simpledateformat/.

1 голос
/ 31 октября 2011

Использовать DateFormat.parse . Если он выдает ParseException, вы знаете, что это недопустимая дата.

0 голосов
/ 31 октября 2011
public boolean trueDate(String date){
  String nums = "0123456789";
  String[] temp;
  temp = date.split("/");
  String year = temp[0];
  String month = temp[1];
  String day = temp[2];

  bool isValid = true;
  for(int i = 0; i < year.length(); i++)
  {
    if(nums.indexOf(year.charAt(i)) == -1)
    {
      isValid = false;
    }
  }

  for(int i = 0; i < month.length(); i++)
  {
    if(nums.indexOf(month.charAt(i)) == -1)
    {
      isValid = false;
    }
  }

  for(int i = 0; i < day.length(); i++)
  {
    if(nums.indexOf(day.charAt(i)) == -1)
    {
      isValid = false;
    }
  }

  return isValid;
}
0 голосов
/ 31 октября 2011

SimpleDateFormat - это встроенный Java-способ сделать то, что вы ищете.Это проверено и правда.Много сайтов с примерами - вот один: http://javatechniques.com/blog/dateformat-and-simpledateformat-examples/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...