webentwicklung-frage-antwort-db.com.de

Wie stelle ich ein Datum als Eingabe in Java ein?

Gibt es eine direkte Möglichkeit, ein Datum für eine Variable festzulegen, aber als Eingabe? Ich meine, dass ich das Datum zur Entwurfszeit nicht kenne, der Benutzer sollte es geben. Ich habe den folgenden Code ausprobiert, aber er funktioniert nicht: Calendar myDate = new GregorianCalendar (int year, int month, int day);

4
user3159060

Versuchen Sie den folgenden Code. Ich analysiere den eingegebenen String, um ein Datum festzulegen

// To take the input
Scanner scanner = new Scanner(System.in);
System.out.println("Enter the Date ");

String date = scanner.next();

SimpleDateFormat dateFormat = new SimpleDateFormat("dd-MMM-yyyy");
Date date2=null;
try {
    //Parsing the String
    date2 = dateFormat.parse(date);
} catch (ParseException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}
System.out.println(date2);
8
sitakant

Java.time

In einigen anderen Antworten wird gezeigt, wie Sie Eingaben vom Benutzer erhalten, aber Sie verwenden die problematischen alten Datums-/Uhrzeit-Klassen, die jetzt veraltet sind und durch die Java.time-Klassen ersetzt werden.

LocalDate

Verwenden Sie für einen Datumswert ohne Uhrzeit und ohne Zeitzone die Klasse LocalDate

LocalDate ld = LocalDate.of( 2026 , 1 , 23 );

Analysieren Sie Ihre Eingabezeichenfolgen als Ganzzahlen, wie hier beschrieben: Wie konvertiere ich einen String in ein int in Java?

int y = Integer.parseInt( yearInput );
int m = Integer.parseInt( monthInput );  // 1-12 for January-December.
int d = Integer.parseInt( dayInput );

LocalDate ld = LocalDate.of( y , m , d );

Über Java.time

Das Java.time Framework ist in Java 8 und höher integriert. Diese Klassen ersetzen die lästigen alten Legacy Date-Time-Klassen wie Java.util.Date , Calendar , & SimpleDateFormat .

Das Joda-Time -Projekt, jetzt im Wartungsmodus , empfiehlt die Migration zu den Java.time -Klassen.

Weitere Informationen finden Sie im Oracle Tutorial . Durchsuchen Sie den Stack Overflow nach vielen Beispielen und Erklärungen. Spezifikation ist JSR 310 .

Wo erhalten Sie die Java.time-Klassen? 

Das Projekt ThreeTen-Extra erweitert Java.time um zusätzliche Klassen. Dieses Projekt ist ein Testfeld für mögliche zukünftige Erweiterungen von Java.time. Hier finden Sie einige nützliche Klassen wie Interval , YearWeek , YearQuarter und more .

2
Basil Bourque

Ich habe die Antwort von @ SK08 geändert und eine Methode erstellt, die Jahr, Monat und Datum als Eingabe vom Benutzer übernimmt und das Datum zurückgibt.

    Scanner scanner = new Scanner(System.in);
    String str[] = {"year", "month", "day" };
    String date = "";

    for(int i=0; i<3; i++) {
        System.out.println("Enter " + str[i] + ": ");
        date = date + scanner.next() + "/";
    }
    date = date.substring(0, date.length()-1);
    System.out.println("date: "+ date); 

    SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd");
    Date parsedDate = null;

    try {
        parsedDate = dateFormat.parse(date);
    } catch (ParseException e) {
        e.printStackTrace();
    }
    return parsedDate;
1
Vikas

Dies sollte gut funktionieren und Sie können das Datum auch mit Setlenient-Funktion überprüfen.

import Java.text.ParseException;
import Java.text.SimpleDateFormat;
import Java.util.ArrayList;
import Java.util.Date;
import Java.util.Scanner;

public class Datinput {

    public static void main(String args[]) {
        int n;
        ArrayList<String> al = new ArrayList<String>();
        Scanner in = new Scanner(System.in);
        n = in.nextInt();
        String da[] = new String[n];
        SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
        sdf.setLenient(false);
        Date date[] = new Date[n];
        in.nextLine();
        for (int i = 0; i < da.length; i++) {
            da[i] = in.nextLine();
        }
        for (int i = 0; i < da.length; i++) {

            try {
                date[i] = sdf.parse(da[i]);
            } catch (ParseException e) {

                e.printStackTrace();
            }
        }

        in.close();
    }
}
0
Mohit Miglani