Jak przekonwertować datę kalendarza na yyyy-MM-dd
format.
Calendar cal = Calendar.getInstance();
cal.add(Calendar.DATE, 1);
Date date = cal.getTime();
SimpleDateFormat format1 = new SimpleDateFormat("yyyy-MM-dd");
String date1 = format1.format(date);
Date inActiveDate = null;
try {
inActiveDate = format1.parse(date1);
} catch (ParseException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
To wytworzy inActiveDate = Wed Sep 26 00:00:00 IST 2012
. Ale potrzebuję 2012-09-26
. Moim celem jest porównanie tej daty z inną datą w mojej bazie danych przy użyciu kryteriów hibernacji. Potrzebuję więc obiektu daty w yyyy-MM-dd
formacie.
Date
doyyyy-MM-dd
lub analizowania ciąg odyyyy-MM-dd
doDate
wartości ?? Aby sformatować datę, po prostu użyjformat1.format(date)
, aby ją przeanalizować, użyjformat1.parse(someStringValueInTheCorrectFormat)
( new SimpleDateFormat( "yyyy-MM-dd'T'HH:mm:ss.SSSXXX" ) ).format( Calendar.getInstance().getTime() );
Odpowiedzi:
Java
Date
jest kontenerem na liczbę milisekund od 1 stycznia 1970 r., 00:00:00 GMT.Gdy używasz czegoś podobnego
System.out.println(date)
, Java używaDate.toString()
do drukowania zawartości.Jedynym sposobem, aby to zmienić, jest zastąpienie
Date
i zapewnienie własnej implementacjiDate.toString()
. Teraz, zanim uruchomisz swoje IDE i spróbujesz tego, nie zrobiłbym tego; skomplikuje to tylko sprawy. Lepiej sformatuj datę do formatu, którego chcesz użyć (lub wyświetlić).Java 8+
Przed Javą 8
Powinieneś korzystać z ThreeTen Backport
Poniższe informacje zostały zachowane do celów historycznych (jako oryginalna odpowiedź)
Co możesz zrobić, to sformatować datę.
To właściwie ta sama data, reprezentowana inaczej.
źródło
Calendar
Calendar
Twój kod jest nieprawidłowy. Nie ma potrzeby analizowania daty i zachowaj ją jako obiekt Date.
Możesz sformatować obiekt daty kalendarza, kiedy chcesz go wyświetlić i zachować jako ciąg.
źródło
java.time
Odpowiedź przez MadProgrammer jest poprawny, zwłaszcza końcówka o Joda-Time . Następca Joda-Time jest teraz wbudowany w Javę 8 jako nowy pakiet java.time . Oto przykładowy kod w Javie 8.
Podczas pracy z datą i godziną (w przeciwieństwie do daty lokalnej) strefa czasowa ma krytyczne znaczenie. Dzień miesiąca zależy od strefy czasowej. Na przykład strefa czasowa w Indiach jest
+05:30
(pięć i pół godziny przed UTC), podczas gdy Francja jest tylko o godzinę do przodu. Tak więc chwila w nowym dniu w Indiach ma jedną datę, podczas gdy ten sam moment we Francji ma „wczorajszą” datę. Tworzenie ciągów wyjściowych bez informacji o strefie czasowej lub przesunięciu powoduje niejednoznaczność. Poprosiłeś o wyjście RRRR-MM-DD, więc podałem, ale nie polecam. ZamiastISO_LOCAL_DATE
użyłbymISO_DATE
aby uzyskać ten wynik:2014-02-25+05:30
Zrzut do konsoli…
Po uruchomieniu…
Joda-Time
Podobny kod z wykorzystaniem biblioteki Joda-Time , prekursora java.time.
ISO 8601
Nawiasem mówiąc, ten format ciągu wejściowego jest formatem standardowym, jednym z kilku przydatnych formatów ciągów daty i godziny zdefiniowanych przez ISO 8601 .
Zarówno Joda-Time, jak i java.time domyślnie używają formatów ISO 8601 podczas analizowania i generowania ciągów reprezentujących różne wartości daty i godziny.
źródło
java.util.Date
obiekt nie może reprezentować daty w formacie niestandardowym , zamiast tego należy użyćSimpleDateFormat.format
metody zwracającejstring
.źródło
Aby parsować
java.util.Date
obiekt, musisz najpierw przekonwertować go na String, używając własnego formatu.Ale wierzę, że jesteś tutaj zbędny.
źródło
Spowoduje to wyświetlenie daty + 7 dni w formacie miesiąca, dnia i roku w okienku okna JOption.
źródło
źródło
Znalazłem ten kod, w którym data jest porównywana w formacie umożliwiającym porównanie z polem daty w bazie danych ... może to być pomocne ...
Podczas konwertowania ciągów na datę przy użyciu formatu simpledate trudno jest porównać z polem Data w bazach danych mysql.
Tak więc przekonwertuj datę ciągu java w formacie przy użyciu wybierz STR_to_DATE ('twoja data', '% m /% d /% Y') -> w tym formacie, a następnie otrzymasz dokładny format daty pola daty mysql.
http://javainfinite.com/java/java-convert-string-to-date-and-compare/
źródło
źródło