2012-05-11 17 views
14

Robię program, który przechowuje bieżący czas i datę w tym formacie w "yyyy-MM-dd'T'HH:mm:ss.SSSZ". i przechowuję go w bazie danych jako ciąg znaków. kiedy zbieram dane, potrzebuję indywidualnych wartości, takich jak dzień, rok, min, sekundy itp. Jak mogę to zrobić?Jak uzyskać dzień, rok, godziny, min Indywidualnie od formatu daty "yyyy-MM-dd'T'HH: mm: ss.SSSZ"?

SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ"); 
String now = formatter.format(new Date()); 

Dziękuję

+0

W czym problem, używasz odpowiedniej klasy? –

+0

W jaki sposób zbierasz dane za pośrednictwem bazy danych lub kodu Java? – pawelzieba

+0

Twoje pytanie jest niejasne ... chcesz je wprowadzić osobno przez użytkownika lub chcesz je rozdzielić wychodząc z bazy danych? – Barak

Odpowiedz

12

ja sugeruję, że można przechowywać razy w DB jako „timeInMillis”. Z mojego doświadczenia wynika, że ​​upraszcza to kod i pozwala porównywać wartości razy między sobą.

Aby zapisać czas:

Calendar calendar = Calendar.getInstance(); // current time 
long timeInMillis = calendar.getTimeInMillis(); 
mDb.saveTime (timeInMillis); // adjust this to work with your DB 

Aby pobrać czas:

long timeInMillis = mDb.getTime(); 
Calendar calendar = Calendar.getInstance(); 
calendar.setTimeInMillis (timeInMillis); 
int milliSeconds = calendar.get(MILLISECOND); 
//etc 
1

Istnieją metody te dostępne, aby poszczególne części daty

getDate() 
getMinutes() 
getHours() 
getSeconds() 
getMonth() 
getTime() 
getTimezoneOffset() 
getYear() 
+0

Ta metoda została uznana za przestarzałą na poziomie interfejsu API 1. W przypadku wersji JDK 1.1, należy zastąpić ją następującą opcją ex: Calendar.get (Calendar.YEAR) - 1900. –

21

Wystarczy użyć analizowania zamiast formacie:

String dateFromDB = ""; 
SimpleDateFormat parser = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ"); 
Date yourDate = parser.parse(dateFromDB); 

A potem możesz czytać dowolne potrzebne pole przy użyciu interfejsu API kalendarza java.util.Date &:

Calendar calendar = Calendar.getInstance(); 
    calendar.setTime(yourDate); 
    calendar.get(Calendar.DAY_OF_MONTH); //Day of the month :) 
    calendar.get(Calendar.SECOND); //number of seconds 
//and so on 

Mam nadzieję, że pasuje do Twoich potrzeb

+0

wyświetla błąd "java.text.ParseException: Nie można znieść daty: 2012-05-11T18: 25: 55: 250GMT ' – wolverine

+0

spróbuj sparsować ją zaraz po formacie. => przeanalizuj wyjście formatu, aby zobaczyć, czy problem pochodzi z bazy danych. – Estragon

+0

tutaj nie przekazałem daty z bazy danych, właśnie wprowadziłem ją ręcznie .. – wolverine

1

wypróbować. Int godzinę = Calendar.getInstance() Pobiera (Calendar.HOUR_OF_DAY);

Tutaj

  • Calendar.HOUR_OF_DAY daje czas 24-godzinny.
  • Calendar.HOUR daje Ci 12-godzinny czas.
Powiązane problemy