2014-03-13 4 views
1

Мне нужно написать программу, которая будет проверять, является ли данная дата действительной или недействительной. Дата находится в формате mm/dd/yyyy, и мне нужно выяснить способ разделить строку на месяцы, дни и годы, чтобы определить, действительна ли дата или нет. Я не могу просто вводить отдельный день месяца и год отдельно, так что это вызывает проблему. В принципе, мне просто нужно выяснить, как разделить строку на разные месяцы, чтобы я мог работать с количеством дней в месяце и использовать это для проверки даты. Любая помощь, которую вы могли бы мне дать, действительно оценили бы, я застрял на этом и не могу понять. Благодарю.Разбиение строк в java

+1

Вы в состоянии использовать DateFormat? Проверьте http://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html –

+1

Если DateFormat не работает, загляните в пакет java.util.regex. –

ответ

2

Вы должны использовать DateFormat, как и другие. Если это не вариант, я думаю, вы можете сделать это:

String myDate = "10/23/1991"; 
String[] split = myDate.split('/'); 
String month = split[0]; 
String day = split[1]; 
String year = split[2]; 
+0

Не будет работать для '5/2', это сработает. – PlasmaPower

+0

@PlasmaPower Он сказал, что получит его только в формате «мм/дд/гггг». – AxiomaticNexus

+0

О, я думал, что он хочет посмотреть, было ли это в формате 'mm/dd/yyyy'. Упс. +1 – PlasmaPower

1

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

Чтобы проверить дату, я бы рекомендовал использовать 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"); 
    } 
} 
0

Попробуйте с 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); 
    } 
Смежные вопросы