2013-09-04 13 views
19

Chciałbym przekonwertować ciąg zmiennej na zmienną typu Czas, a nie Data przy użyciu języka Java. wygląd jak ten ciąg 17:40Konwertuj ciąg znaków Javy na czas, NIE DATA

Próbowałem za pomocą poniższego kodu, ale ten przypadek jest nie zmienna typu data czas

String fajr_prayertime =  prayerTimes.get(0); 
DateFormat formatter = new SimpleDateFormat("HH:mm"); 
fajr_begins = (Date)formatter.parse(fajr_prayertime); 
System.out.println(" fajr time " + fajr_begins); 

Jednak Netbean skarży się, że powinienem wstawić wyjątek jak poniżej;

DateFormat formatter = new SimpleDateFormat("HH:mm"); 
try { 
fajr_begins = (Date)formatter.parse(fajr_prayertime); 
} catch (ParseException ex) { 
Logger.getLogger(JavaFXApplication4.class.getName()).log(Level.SEVERE, null, ex); 
} 
System.out.println(" fajr time " + fajr_begins); 

Każdy pomysł, jak mogę uzyskać czas z powyższego łańcucha.

+1

Jaki format ma oryginalny "Ciąg"? ... Ponadto Java nie ma obiektu 'Time', innego niż' java.sql.Time' ... – MadProgrammer

+1

co to jest czas? 'java.sql.Time'? – nachokk

+0

czas pochodzi z ArrayList prayerTimes String fajr_prayertime = prayerTimes.get (0); – Ossama

Odpowiedz

27
java.sql.Time timeValue = new java.sql.Time(formatter.parse(fajr_prayertime).getTime()); 
+0

Otrzymuję następujący, niezarejestrowany wyjątek wyjątek wyjątku, musi zostać złapany lub zadeklarowany zostać wyrzucony, czy naprawdę muszę utworzyć wyjątek dla tego !! – Ossama

+0

Musisz złapać lub propagować wyjątek. Nie trzeba jednak tworzyć wyjątku. Zauważ, że nie masz * do zrobienia czegokolwiek z wyjątkiem, ale jeśli tego nie zrobisz, błędne dane wejściowe zostaną po cichu zignorowane, co doprowadzi do późniejszych problemów. Zalecam rejestrowanie go tak, jak robi to pierwotny przykład kodu. – ash

4

Czasami warto spojrzeć na ten przykład:

public static void main(String[] args) { 

    String myTime = "10:30:54"; 
    SimpleDateFormat sdf = new SimpleDateFormat("hh:mm:ss"); 
    Date date = null; 
    try { 
     date = sdf.parse(myTime); 
    } catch (ParseException e) { 
     e.printStackTrace(); 
    } 
    String formattedTime = sdf.format(date); 

    System.out.println(formattedTime); 

} 
11

Można rozważyć Joda Time lub Java 8, która ma typ o nazwie LocalTime specjalnie dla pory dnia bez składnika daty.

Przykład kodu w Joda-Time 2.7/Java 8.

LocalTime t = LocalTime.parse("17:40") ; 
2

Można użyć następującego kodu do zmiany wartości String na ekwiwalent czasu:

String str = "08:03:10 pm"; 
DateFormat formatter = new SimpleDateFormat("hh:mm:ss a"); 
Date date = (Date)formatter.parse(str); 

nadzieję, że to pomaga.

1

spróbować ...

java.sql.Time.valueOf("10:30:54"); 
0

Joda-Time & java.time

Zarówno Joda-Time i java.time (nowość w Java 8) oferują klasę LocalTime do reprezentowania Time-of-day bez data lub strefa czasowa.

Przykładowy kod w Joda-Time 2.3.

LocalTime localTime = new LocalTime("14:40"); 
LocalTime deadline = new LocalTime("15:30"); 
boolean meetsDeadline = localTime.isBefore(deadline); 
5
try { 

    SimpleDateFormat format = new SimpleDateFormat("hh:mm a"); //if 24 hour format 
    // or 
    SimpleDateFormat format = new SimpleDateFormat("HH:mm"); // 12 hour format 

    java.util.Date d1 =(java.util.Date)format.parse(your_Time); 

    java.sql.Time ppstime = new java.sql.Time(d1.getTime()); 

} catch(Exception e) { 

    Log.e("Exception is ", e.toString()); 
} 
1

String do czasu (używając dowolny czas):

String myTime = "10:00:00"; 
Time startingTime = new Time (myTime); 

String do czasu (poleceniem CurrentTime):

String currentTime = getCurrentTime(); 
Time startingTime = new Time (currentTime); 

Czas na ciąg:

private String getCurrentTime() {  
    SimpleDateFormat dateFormat = new SimpleDateFormat("kkmmss"); 
    String currentTime = dateFormat.format(System.currentTimeMillis()); 
    return currentTime; 
} 
+0

Jaką klasą jest "Czas"? Proszę wspomnieć o bibliotece i link do dokumentu. –

+0

Kiedy tworzę Time startTime; - Eclipse oferuje opcję importu "Time" (android.text.format) – JanB

2
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("HH:MM"); 
simpleDateFormat.format(fajr_prayertime);