Мне нужно написать программу, которая будет проверять, является ли данная дата действительной или недействительной. Дата находится в формате mm/dd/yyyy, и мне нужно выяснить способ разделить строку на месяцы, дни и годы, чтобы определить, действительна ли дата или нет. Я не могу просто вводить отдельный день месяца и год отдельно, так что это вызывает проблему. В основном мне просто нужно выяснить, как разделить строку на разные месяцы, чтобы я мог работать с каждым месяцем дней и использовать это для проверки даты. Любая помощь, которую вы могли бы мне дать, действительно оценили бы, я застрял на этом и не могу понять. Благодарю.
Вы должны использовать DateFormat
как и другие. Если это не вариант, я думаю, вы можете это сделать:
String myDate = "10/23/1991";
String[] split = myDate.split('/');
String month = split[0];
String day = split[1];
String year = split[2];
Почти никогда не рекомендуется разбирать дату самостоятельно. Даты - загадочные вещи: прыжки секунд, високосные годы, часовые пояса и т.д. - очень сложная вещь.
Чтобы проверить дату, я бы рекомендовал использовать java-функции для этой задачи (или библиотеки). Вот пример:
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Snippet {
public static void main(String[] args) throws ParseException {
// define your own date format
SimpleDateFormat dateFormat = new SimpleDateFormat("MM/dd/yyyy");
// for strict parsing of dates, turn of lenient mode
dateFormat.setLenient(false);
// try to parse the date
Date date = dateFormat.parse("13/31/1604");
// if no exception occurs, your date is a valid date
System.out.println("date valid");
}
}
Попробуйте с SimpleDateFormat
Date date = null;
try {
String target = "07/30/1991";
DateFormat df = new SimpleDateFormat("M/d/yyyy", Locale.ENGLISH);
date = df.parse(target);
} catch (ParseException ex) {
date = null;
}
if (date != null) {
// Or you use the deprecated methods .. just saying
Calendar cal = Calendar.getInstance();
cal.setTime(date);
int day = cal.get(Calendar.DAY_OF_MONTH);
int month = cal.get(Calendar.MONTH);
int year = cal.get(Calendar.YEAR);
}
5/2
, он вылетит.