2009-05-25 8 views
101

Come si ottengono Ore e minuti da quando Date.getHours e Date.getMinutes sono stati ritirati? Gli esempi che ho trovato sulla ricerca di Google hanno utilizzato i metodi deprecati.Java: getMinutes e getHours

risposta

72

Dal Javadoc per Date.getHours

As of JDK version 1.1, replaced by Calendar.get(Calendar.HOUR_OF_DAY)

in modo da utilizzare

Calendar rightNow = Calendar.getInstance(); 
int hour = rightNow.get(Calendar.HOUR_OF_DAY); 

e l'equivalente per getMinutes.

+2

Allora ... come fa questo lavoro, se voglio ottenere le ore da una data che non corrisponde ad ora? – Michael

+0

Vedere http://stackoverflow.com/questions/8150155/java-gethours-getminutes-and-getseconds – Mark

33

In primo luogo, l'importazione java.util.Calendar

Calendar now = Calendar.getInstance(); 
System.out.println(now.get(Calendar.HOUR_OF_DAY) + ":" + now.get(Calendar.MINUTE)); 
6

Prova Calendario. Usa getInstance per ottenere un oggetto calendario. Quindi utilizzare setTime per impostare la Data richiesta. Ora puoi utilizzare get (int field) con la costante appropriata come HOUR_OF_DAY o così leggere i valori che ti servono.

http://java.sun.com/javase/6/docs/api/java/util/Calendar.html

2

lo consiglio cercando di tempo ad Joda. http://www.joda.org/joda-time/

Avevo paura di aggiungere un'altra libreria al mio progetto spesso, ma è semplice, veloce, intelligente e impressionante. Inoltre, funziona bene con il codice esistente, in una certa misura.

145

Provare a utilizzare Joda Time invece delle classi standard java.util.Date. La libreria Joda Time ha API molto migliori per gestire le date.

DateTime dt = new DateTime(); // current time 
int month = dt.getMonth();  // gets the current month 
int hours = dt.getHourOfDay(); // gets hour of day 

Vai a questa question per pro ei contro di utilizzare libreria Joda Time.

Joda Time può anche essere incluso in alcune versioni future di Java come componente standard, vedere JSR-310.


Se è necessario utilizzare le classi tradizionali java.util.Date e java.util.Calendar, vedere il loro JavaDoc di aiuto (java.util.Calendar e java.util.Date).

È possibile utilizzare le classi tradizionali come questa per recuperare i campi da un'istanza Date data.

Date date = new Date(); // given date 
Calendar calendar = GregorianCalendar.getInstance(); // creates a new calendar instance 
calendar.setTime(date); // assigns calendar to given date 
calendar.get(Calendar.HOUR_OF_DAY); // gets hour in 24h format 
calendar.get(Calendar.HOUR);  // gets hour in 12h format 
calendar.get(Calendar.MONTH);  // gets month number, NOTE this is zero based! 
1

Mentre io non consiglierei di farlo, penso che la pena sottolineare che, sebbene molti metodi su java.util.Date sono stati deprecati, che fanno ancora lavorare. In situazioni banali, può essere OK usarli. Inoltre, java.util.Calendar è piuttosto lento, quindi getMonth e getYear su Date potrebbero essere utilmente più veloci.

0

import java.util.* È possibile ottenere ore e minuti utilizzando il calendario e la classe di formattazione. Calendar cal = Calendar.getInstance() e Formatter fmt=new Formatter() e impostare un formato per la visualizzazione e un'ora minuti mostra uscita fmt.format("%tl:%M",cal,cal) e stampare System.out.println(fmt) come 10:12

28

java.tempo

Mentre io sono un fan di Joda-Time, Java 8 introduce il pacchetto java.time che è finalmente una soluzione standard di Java vale la pena! Leggi questo articolo, Java SE 8 Date and Time, per una buona quantità di informazioni su java.time al di fuori di ore e minuti.

In particolare, guarda la classe LocalDateTime.

Ore e minuti:

LocalDateTime.now().getHour(); 
LocalDateTime.now().getMinute(); 
+0

Questa è la migliore risposta. Si consiglia di fornire un fuso orario esplicito per ricordare al lettore e a te stesso che si tratta di un'operazione sensibile al fuso orario: 'LocalDateTime.now (ZoneId.of (" Asia/Manilla "))'. Leggi 'now()' solo una volta per coerenza (il tempo passerà tra le due chiamate). Se la data è davvero irrilevante, anche 'LocalTime' funziona. –

1
int hr=Time.valueOf(LocalTime.now()).getHours(); 
int minutes=Time.valueOf(LocalTime.now()).getMinutes(); 

Queste funzioni torneranno int valori tra ore e minuti.

+0

Duplicato. Questo approccio era già trattato nella [Risposta di J.D.] (http://stackoverflow.com/a/29270120/642706). –

+0

È java.sql.Time? Certamente nessuna ragione per mettere in gioco quella classe obsoleta quando si ha 'java.time.LocalTime'. Stai complicando le cose. –

1
public static LocalTime time() { 
    LocalTime ldt = java.time.LocalTime.now(); 

    ldt = ldt.truncatedTo(ChronoUnit.MINUTES); 
    System.out.println(ldt); 
    return ldt; 
} 

questo funziona per me

+0

Elegante. Potresti voler spiegare perché funziona. –