|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Nov 2004
Messaggi: 409
|
[JSP]=gestione date
In che modo posso calcolare la data dopo due settimane partendo dalla data odierna?
per esempio se è il giorno 5/08/05 basta sommare 14+5=19/08/05 se invece ne ho 20 devo andare a valutare il mese e fare un riporto,per caso esiste qualcosa di già implementato?grazie ciao |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Nov 2004
Messaggi: 409
|
ho fatto in questo modo:
Codice:
long currentDate=System.currentTimeMillis(); long oneDay=1000*60*60*24; int giorni=10; SimpleDateFormat sdf=new SimpleDateFormat("dd/MM/yyyy"); String result=sdf.format(new Date(currentDate+(oneDay*giorni))); out.println("Fra 10 giorni="+result); result=sdf.format(new Date(currentDate)); out.println("Oggi="+result); ciao |
![]() |
![]() |
![]() |
#3 |
Senior Member
Iscritto dal: May 2000
Messaggi: 1135
|
Codice:
The day-of-week is an integer value where 1 is Sunday, 2 is Monday, ..., and 7 is Saturday Calendar xmas = new GregorianCalendar(1998, Calendar.DECEMBER, 25); int dayOfWeek = xmas.get(Calendar.DAY_OF_WEEK); // 6=Friday Calendar cal = new GregorianCalendar(2003, Calendar.JANUARY, 1); dayOfWeek = cal.get(Calendar.DAY_OF_WEEK); // 4=Wednesday |
![]() |
![]() |
![]() |
#4 | |
Senior Member
Iscritto dal: Jun 2001
Città: Alessandria (provincia)
Messaggi: 4772
|
Quote:
Codice:
TimeZone tz = TimeZone.getTimeZone("Europe/Rome"); // Imposto la zona oraria GregorianCalendar gc = new GregorianCalendar(tz); // Recupero la data attuale gc.add(Calendar.DAY_OF_MONTH, 14); // Aggiungo 14 giorni (2 settimane) // Altri esempi per comprendere meglio gc.add(Calendar.DAY_OF_MONTH, -14); // Tolgo 14 giorni (2 settimane) gc.add(Calendar.MONTH, 14); // Aggiungo 14 mesi gc.add(Calendar.YEAR, -2); // Tolgo 2 anni Non ti serve calcolare i riporti, fa tutto il metodo add. Alla fine leggi normalmente il nuovo giorno, mese, anno. |
|
![]() |
![]() |
![]() |
#5 | |
Senior Member
Iscritto dal: Nov 2004
Messaggi: 409
|
Quote:
1)ma come avevo fatto io prima perchè non andava bene? 2)si può dare un formato al calendario del tipo dd/MM/yyyy? Ciao e grazie per l'aiuto Ultima modifica di mercury841 : 27-11-2005 alle 10:24. |
|
![]() |
![]() |
![]() |
#6 | ||
Senior Member
Iscritto dal: Jun 2001
Città: Alessandria (provincia)
Messaggi: 4772
|
Quote:
Io l'ho sempre usato quel metodo. Però quello che ti ho detto è più pratico e leggibile, non ti sembra? Non escludo che poi faccia gli stessi conti passando ai millisecondi, ma dal punto di vista della lettura del codice ti snellisce il tutto. Quote:
Io per fare prima ed essere sicuro che non sorgano problemi di localizzazione o altro, mi sono fatto un metodo stupido, che dato un GregorianCalendar gc ti ritorna una stringa: return gc.get(Calendar.DAY_OF_MONTH)+"/"+(gc.get(Calendar.MONTH)+1)+"/"+gc.get(Calendar.YEAR); |
||
![]() |
![]() |
![]() |
#7 |
Senior Member
Iscritto dal: Nov 2004
Messaggi: 409
|
Si anche io ho fatto così, anche perchè la data la dovrei inserire in un database.
Ciao e grazie per l'aiuto |
![]() |
![]() |
![]() |
#8 | |
Senior Member
Iscritto dal: Jun 2001
Città: Alessandria (provincia)
Messaggi: 4772
|
Quote:
Và bene solo se il tipo del record nel DB è string (cioè, memorizzo la stringa, e non mi interessa gestirla come data). Altrimenti ti conviene pensare di usare un setDate per scriverla, così è il driver JDB che si occupa della conversione nel formato più opportuno. |
|
![]() |
![]() |
![]() |
#9 | |
Senior Member
Iscritto dal: Feb 2002
Città: Trento
Messaggi: 962
|
Quote:
Codice:
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy"); Codice:
String output = sdf.format(gc.getTime());
__________________
"Et Eärallo Endorenna utúlien. Sinome maruvan ar Hildinyar tenn' Ambar-metta!" -- Aragorn Elessar, Heir of Isildur Mixmar -- OpenSuSE 11.1 on AMD 64 3000+ on DFI LanParty nF4-D | GeForce 6600 GT + Thermaltake Schooner on Samsung 710N Storage -- ( 2 x Hitachi Deskstar 80 Gb + 1 x Hitachi 250 Gb ) = 1 RAID 5 + 1 Storage space LaCie Ethernet Disk Mini 250 Gb | HP - DV2150 EL MILAN CLAN |
|
![]() |
![]() |
![]() |
#10 | |
Senior Member
Iscritto dal: Nov 2004
Messaggi: 409
|
Quote:
Per quanto riguarda setDate, a cosa mi serve? |
|
![]() |
![]() |
![]() |
#11 | |
Senior Member
Iscritto dal: Jun 2001
Città: Alessandria (provincia)
Messaggi: 4772
|
Quote:
Codice:
pstmt = con.prepareStatement("UPDATE MIA_TABELLA SET DATA_COMPLEANNO=? WHERE LOGIN=?"); pstmt.setDate(1, dataCompleanno); pstmt.setString(2, "pinok"); pstmt.executeUpdate(); Questo ti permette di evitare anche problemi con apici e doppi apici nella stringa, che altrimenti dovresti preprocessare con degli escape del tipo: stmt.executeUpdate("INSERT INTO FRASI_TABLE (FRASE) VALUES ('ecco l\'esempio che volevo')"); Ultimamente uso le date in notazione giapponese per facilitare la portabilità e mantenere le funzioni di ordinamento. In pratica scrivi degli interi come AAAAMMGG, mi raccomando di usare tutte e 8 le cifre (quindi il 2 febbraio del 2005 diventa 20050202). In questo modo il numero più grande indica data successiva, più piccolo data precedente. Ti devi definire solo un paio di metodi, che ti passano da notazione giapponese a una stringa (il formato è rigido, te la cavi con dei substring) e viceversa (per giorno e mese devi verificare che se <10 devi premettere uno 0) |
|
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 23:13.