web-dev-qa-db-de.com

Rufen Sie die Werte für Monat, Tag und Jahr mithilfe von Java aus einem String ab

So extrahieren Sie Tages-, Monats- und Jahreswerte aus einer Zeichenfolge [wie 18/08/2012]. Ich habe versucht, SimpleDateFormat zu verwenden, aber es gibt ein Date-Objekt zurück, und ich habe festgestellt, dass alle Get-Methoden veraltet sind. Gibt es einen besseren Weg, dies zu tun?

Vielen Dank

13
usp

Persönlich würde ich Joda Time verwenden, was das Leben erheblich vereinfacht. Insbesondere bedeutet dies, dass Sie sich nicht um die Zeitzone der Calendar im Vergleich zur Zeitzone einer SimpleDateFormat kümmern müssen - Sie können nur eine LocalDate parsen, was Ihnen die Daten wirklich zeigen. Es bedeutet auch, dass Sie sich keine Sorgen machen müssen, dass Monate 0-basiert sind :)

Joda Time macht viele Datums-/Uhrzeitvorgänge viel angenehmer.

import Java.util.*;
import org.joda.time.*;
import org.joda.time.format.*;

public class Test {

    public static void main(String[] args) throws Exception {
        DateTimeFormatter formatter = DateTimeFormat.forPattern("dd/MM/yyyy")
            .withLocale(Locale.UK);

        LocalDate date = formatter.parseLocalDate("18/08/2012");

        System.out.println(date.getYear());  // 2012
        System.out.println(date.getMonthOfYear()); // 8
        System.out.println(date.getDayOfMonth());   // 18
    }
}
21
Jon Skeet

Einfach für String.split() gehen,

String str[] = "18/08/2012".split("/");
int day = Integer.parseInt(str[0]);
int month = Integer.parseInt(str[1]);
..... and so on
14
jayantS

Dies sollte Sie in Gang bringen, ohne externe Gläser hinzuzufügen

SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");  
Date parse = sdf.parse("18/08/2012");  
Calendar c = Calendar.getInstance();  
c.setTime(parse);  
System.out.println(c.get(Calendar.MONTH) + c.get(Calendar.DATE) + c.get(Calendar.YEAR)); 
8

Erstellen Sie ein Java.util.Calendar-Objekt wie folgt aus diesem Datum, und extrahieren Sie die Datumsteile:

Calendar cal = Calendar.getInstance();
cal.setTime(<date from simple-date-format).
cal.get(Calendar.MONTH);

usw.,

5
Vikdor

tl; dr

Java.time.LocalDate.parse(
    "18/08/2012" , 
    DateTimeFormatter.ofPattern( "dd/MM/uuuu" ) 
).getDayOfMonth​() // .getYear​() .getMonth()

Java.time

Der moderne Ansatz verwendet die Klassen Java.time. Vermeiden Sie die problematischen älteren Klassen wie Date & Calendar.

LocalDate

String input = "18/08/2012" ;

Die LocalDate -Klasse steht für einen Datumswert ohne Uhrzeit und ohne Zeitzone.

DateTimeFormatter f = DateTimeFormatter.ofPattern( "dd/MM/uuuu" ) ;
LocalDate ld = LocalDate.parse( input , f ) ;

ld.toString (): 2012-08-18

Getter-Methoden

Fragen Sie nach den Teilen.

int d = ld.getDayOfMonth​() ;
int m = ld.getMonthValue() ;
int y = ld.getYear() ;

Ü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

Verwenden Sie dies und übergeben Sie den Datumswert

SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
Date parse = sdf.parse(""18/01/2018);
Calendar calendar = Calendar.getInstance();
calendar.setTime(parse);
int date = calendar.get(Calendar.DATE);
//+1 Is Important Because if the month is January then coming 0 so Add +1
int month = calendar.get(Calendar.MONTH)+1;
int year = calendar.get(Calendar.YEAR);
System.out.println("Date:"+date +":Month:"+ month + ":Year:"+year);
1
Abhijit Patra

Ein anderer Ansatz kann use Calendar object get(Calendar.MONT) sein.

Beispiel:

Calendar cal = Calendar.getInstance();
cal.setTime(dateObj).
cal.get(Calendar.MONTH);

(oder) 

Sie können auch String.split () verwenden.

1
kosa