string TT.MM.JJJJ parsen?

Hallo!

Schau mal hier:
Java:
package de.tutorials;

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.GregorianCalendar;

/**
 * <p>
 * TODO Description of the type
 * </p>
 * @author Thomas.Darimont
 */
public class DateParsingExample {

  /**
   * <p>
   * TODO Description of method
   * </p>
   * @param args
   */
  public static void main(String[] args) throws Exception {
    String str = "23.12.2007";
    SimpleDateFormat dateFormat = new SimpleDateFormat("dd.MM.yyyy");
    GregorianCalendar gregorianCalendar = new GregorianCalendar();
    gregorianCalendar.setTime(dateFormat.parse(str));
    System.out.println(gregorianCalendar.get(Calendar.YEAR));
    System.out.println(gregorianCalendar.get(Calendar.MONTH) + 1);
    System.out.println(gregorianCalendar.get(Calendar.DAY_OF_MONTH));
  }
}
Der Umgang mit Datums/Zeitwerten ist mit der Standard Java API seeeeehr mühsam...
mit joda-time ist das alles viel einfacher:
http://joda-time.sourceforge.net/

Gruß Tom
 
Ich möchte nur die 3 werte in int werte speichern, damit ich diese später weiterverarbeiten kann.

String str = "23.12.2007";
int tag;
int monat;
int jahr;

//...parse 23, 12, 2007
// tag = 23;
// monat = 12;
// jahr = 2007;

Bitte nochmals um Hilfe
 
Hi,

mit der Methode split(). Kannst Du sagen, das der String an dem Zeichen "." gesplittet werden soll. Das ganze schreibst Du in ein Stringarray und anschließend liest du die Werte aus dem Array in dein Intvariablen. Ich glaube es war Integer.parsInt(tag); um einen String in einen Integer zu wandeln.

Gruß KlaDi.
 
Oder du machst das über nen Scanner. Dann sparst du dir das umwandeln in int:

Java:
String date = "23.01.2007";
Scanner scn = new Scanner(date).useDelimiter("\\.");
        
int day = scn.nextInt();
int month = scn.nextInt();
int year = scn.nextInt();
        
System.out.println(day + "." + month + "." + year);

mfg
Daniel
 
Wie kann man prüfen ob die Eingabe richtig ist, also es sollen folgende Eingabe vermieden werden:

23.A5.2003 //A keine Zahl
23.02!2007 // ! statt .
 
Hallo!

schau mal hier:
Java:
/**
 * 
 */
package de.tutorials;

/**
 * @author Tom
 *
 */
public class DateFormatMatcher {

    /**
     * @param args
     */
    public static void main(String[] args) {
        String ddmmyyyyDateFormatRegex = "[0123]\\d\\.[01]\\d\\.\\d{4}";
        System.out.println("23.A5.2003".matches(ddmmyyyyDateFormatRegex));
        System.out.println("23.02!2007".matches(ddmmyyyyDateFormatRegex));
        System.out.println("23.05.2003".matches(ddmmyyyyDateFormatRegex));
    }
}
Wenn du eine "logische" Datumsprüfung brauchst könntest du folgendes machen:
Java:
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("dd.MM.yyyy");
        simpleDateFormat.setLenient(false);
        System.out.println(simpleDateFormat.parse("31.02.2005"));

Gruß Tom
 
Zurück