2016-10-13 4 views
0

Ich möchte LocalDate in GregorianCalendar konvertieren. Bitte um Rat. In meiner Anwendung verwenden wir GregorianCalendar, um mit Datumsangaben zu arbeiten. Aber ich habe ein joda LocalDate als Rückgabetyp, wenn ich einen der Webservice angerufen habe. Nun möchte ich das LocalDate zu GregorianCalendar als seine mit der Monatswertanzeige abweichen. Bitte beachten Sie den Beispielcode unten. LocalDate zeigt 10 für den Monat Oktober, während GregorianCalendar 9 für den Monat Oktober anzeigt, da es mit Index 0 beginnt. Bitte schlagen Sie vor, wie LocalDate in GregorianCalendar konvertiert wird, ich habe versucht, API-Methoden zu sehen, aber ohne Glück.Konvertierung von LocalDate zu GregorianCalendar in Java

import java.util.GregorianCalendar; 
import org.joda.time.DateTime; 
import org.joda.time.LocalDate; 
//sample code below 
LocalDate localDateObj = new LocalDate(); 
System.out.println("Month value using LocalDate :" + localDateObj.getMonthOfYear()); 
System.out.println("Date using LocalDate : " + localDateObj); 

//converting LocalDate to DateTime 
DateTime dateTimeObj = localDateObj.toDateTimeAtStartOfDay(); 
System.out.println("DateTime month " + dateTimeObj.getMonthOfYear()); 
System.out.println("Date using DateTime : " + dateTimeObj); 

//GregorianCalendar 
GregorianCalendar gc = new GregorianCalendar(); 
System.out.println("Month value using GregorianCalendar:" + gc.OCTOBER); 
System.out.println("GC :" + gc.getTime()); 

Ausgang:

Month value using LocalDate :10 
Date using LocalDate : 2016-10-13 
DateTime month 10 
Date using DateTime : 2016-10-13T00:00:00.000-04:00 
Month value using GregorianCalendar:9 
GC :Thu Oct 13 16:14:43 EDT 2016 

Bitte geben wie org.joda.time.LocalDate zu java.util.GregorianCalendar zu konvertieren, oder gibt es einen besseren Weg, dies zu lösen. Da ich die Logik, die GregorianCalendar verwendet, nicht ändern kann, möchte ich die Logik ändern, die joda LocalDate verwendet, um den Monat als GregorianCalendar anzuzeigen (z. B. für Oktobermonat wird 9 als Indexstart von 0 bis 11 angezeigt).

+0

Können Sie 'gregorianCalendar.setDate (localDate.toDate())' '? – msandiford

+0

@msandiford - GregorianCalendar hat keine setDate (..) -Methode, kann das nicht tun – joan

+0

Entschuldigung, Tippfehler in letzter Minute. Ich meinte 'gregorianCalendar.setTime (localDate.toDate())'. Trotz des Namens wird hier auch das Datum festgelegt. – msandiford

Antwort

2

dieses Beispiel LOCALDATE zu konvertieren

LocalDate localDateObj = LocalDate.now(); 
      GregorianCalendar gc = GregorianCalendar.from(localDateObj.atStartOfDay(ZoneId.systemDefault())); 

Hinweis GregorianCalendar: gc.OCTOBER bis 9 gesetzt ist, aber es den zehnten Monat des Jahres in den gregorianischen und julianische Kalender anzeigt.

Hoffe diese Hilfe!

+0

Ich benutze Java5, ZoneId-Klasse wird nicht unterstützt. Bitte schlagen Sie dasselbe vor, wenn Sie java5 verwenden. Vielen Dank. – joan