2010-11-08 18 views

risposta

5

Convertire il tuo java.sql.Timestamp in un java.sql.Date e inviarlo tramite un calendario.

java.sql.Timestamp ts = rs.getTimestamp(1); 
java.util.GregorianCalendar cal = Calendar.getInstance(); 
cal.setTime(ts); 
System.out.println(cal.get(java.util.Calendar.DAY_OF_WEEK)); 
+1

Penso che 'Calendar.get()' restituisca un intero. Quindi, questo significherebbe che devi ancora creare una stringa di rappresentazione per il giorno della settimana. –

+3

Non c'è assolutamente bisogno di costruire una nuova data su di esso. Il 'Timestamp' è una ** sottoclasse ** di' java.util.Date'. Quindi 'cal.setTime (ts)' avrebbe funzionato altrettanto bene. Inoltre, la pratica raccomandata è di ottenere il calendario dal suo factory astratto come "Calendar cal = Calendar.getInstance()'. – BalusC

+0

Risposta migliorata :) – bwawok

2

SimpleDateFormat fornirà una rappresentazione specifica Locale utilizzando il modello "EEEE": Utilizzo

public static final String getDayName(final java.util.Date date, final java.util.Locale locale) 
      { 
      SimpleDateFormat df=new SimpleDateFormat("EEEE",locale); 
      return df.format(date); 
      } 

Esempio:

System.out.println(getDayName(new Date(),Locale.US)); 

rendimenti Tuesday.

Ma attenzione che new SimpleDateFormat(..) è expensive.

+0

non usare questo! cos SimpleDateFormat non ha misurato il fuso orario (https://stackoverflow.com/questions/18122608/simpledateformat-parse-loses-timezone/18124407#18124407) ma quando si imposta da lungo tempo, non si conosce il fuso orario! –

5

Se ts è l'oggetto Timestamp poi per ottenere il mese in formato stringa:

String month = (new SimpleDateFormat("MMMM")).format(ts.getTime()); // "April" 

e per il giorno della settimana:

String day = (new SimpleDateFormat("EEEE")).format(ts.getTime()); // "Tuesday" 
+0

non usare questo! cos SimpleDateFormat non ha misurato il fuso orario (https://stackoverflow.com/questions/18122608/simpledateformat-parse-loses-timezone/18124407#18124407) ma quando si imposta da lungo tempo, non si conosce il fuso orario! –

+0

Qualsiasi tempo rappresentato in long viene rappresentato come numero di millisecondi dall'epoca. Questo è UTC. –

Problemi correlati