Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Cybersecurity: email, utenti e agenti IA, la nuova visione di Proofpoint
Cybersecurity: email, utenti e agenti IA, la nuova visione di Proofpoint
Dal palco di Proofpoint Protect 2025 emerge la strategia per estendere la protezione dagli utenti agli agenti IA con il lancio di Satori Agents, nuove soluzioni di governance dei dati e partnership rafforzate che ridisegnano il panorama della cybersecurity
Hisense A85N: il ritorno all’OLED è convincente e alla portata di tutti
Hisense A85N: il ritorno all’OLED è convincente e alla portata di tutti
Dopo alcuni anni di assenza dai cataloghi dei suoi televisori, Hisense riporta sul mercato una proposta OLED che punta tutto sul rapporto qualità prezzo. Hisense 55A85N è un televisore completo e versatile che riesce a convincere anche senza raggiungere le vette di televisori di altra fascia (e altro prezzo)
Recensione Borderlands 4, tra divertimento e problemi tecnici
Recensione Borderlands 4, tra divertimento e problemi tecnici
Gearbox Software rilancia la saga con Borderlands 4, ora disponibile su PS5, Xbox Series X|S e PC. Tra le novità spiccano nuove abilità di movimento, un pianeta inedito da esplorare e una campagna che lascia al giocatore piena libertà di approccio
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 26-11-2005, 22:53   #1
mercury841
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
mercury841 è offline   Rispondi citando il messaggio o parte di esso
Old 26-11-2005, 23:07   #2
mercury841
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);
Esiste un metodo per ricavarmi il giorno(per esempio domenica) dalla data???

ciao
mercury841 è offline   Rispondi citando il messaggio o parte di esso
Old 26-11-2005, 23:38   #3
Napalm
Senior Member
 
L'Avatar di Napalm
 
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
NapalM
__________________
Quote:
Originariamente inviato da trallallero Guarda i messaggi
Gli anti-fascisti, quelli fascisti coi fascisti, "i diversamente fascisti" (cit. "Napalm"), non meritano il mio rispetto
Napalm è offline   Rispondi citando il messaggio o parte di esso
Old 27-11-2005, 00:10   #4
pinok
Senior Member
 
Iscritto dal: Jun 2001
Città: Alessandria (provincia)
Messaggi: 4772
Quote:
Originariamente inviato da mercury841
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
Credo che il metodo più corretto sia questo:

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
Tieni presente che in questo modo la data è calcolata sempre esattamente rispetto all'ora in cui è stata letta dal sistema, e non dalla mezzanotte, per cui quando aggiungi 2 settimane, se ora sono le 23.30 ottieni la data fra due settimane alle 23.30

Non ti serve calcolare i riporti, fa tutto il metodo add. Alla fine leggi normalmente il nuovo giorno, mese, anno.
pinok è offline   Rispondi citando il messaggio o parte di esso
Old 27-11-2005, 10:20   #5
mercury841
Senior Member
 
Iscritto dal: Nov 2004
Messaggi: 409
Quote:
Originariamente inviato da pinok
Credo che il metodo più corretto sia questo:

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
Tieni presente che in questo modo la data è calcolata sempre esattamente rispetto all'ora in cui è stata letta dal sistema, e non dalla mezzanotte, per cui quando aggiungi 2 settimane, se ora sono le 23.30 ottieni la data fra due settimane alle 23.30

Non ti serve calcolare i riporti, fa tutto il metodo add. Alla fine leggi normalmente il nuovo giorno, mese, anno.

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.
mercury841 è offline   Rispondi citando il messaggio o parte di esso
Old 27-11-2005, 13:04   #6
pinok
Senior Member
 
Iscritto dal: Jun 2001
Città: Alessandria (provincia)
Messaggi: 4772
Quote:
Originariamente inviato da mercury841
1)ma come avevo fatto io prima perchè non andava bene?
Si, andava bene.
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:
Originariamente inviato da mercury841
2)si può dare un formato al calendario del tipo dd/MM/yyyy?

Ciao e grazie per l'aiuto
Penso di si, non saprei dirti.
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);
pinok è offline   Rispondi citando il messaggio o parte di esso
Old 27-11-2005, 13:21   #7
mercury841
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
mercury841 è offline   Rispondi citando il messaggio o parte di esso
Old 27-11-2005, 16:23   #8
pinok
Senior Member
 
Iscritto dal: Jun 2001
Città: Alessandria (provincia)
Messaggi: 4772
Quote:
Originariamente inviato da mercury841
Si anche io ho fatto così, anche perchè la data la dovrei inserire in un database.

Ciao e grazie per l'aiuto
Per il database, occhio che anch'io la inserivo "formattata", perchè per mysql andava bene ("2005-11-27") ma questo dava problemi di compatibilità nel caso di porting verso altri DB.
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.
pinok è offline   Rispondi citando il messaggio o parte di esso
Old 27-11-2005, 16:57   #9
Mixmar
Senior Member
 
L'Avatar di Mixmar
 
Iscritto dal: Feb 2002
Città: Trento
Messaggi: 962
Quote:
Originariamente inviato da mercury841
Si anche io ho fatto così, anche perchè la data la dovrei inserire in un database.

Ciao e grazie per l'aiuto
Giungo tardi, è evidente che a te non serve... comunque si poteva anche usare un DateFormat, per esempio:

Codice:
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
e poi utilizzare

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
Mixmar è offline   Rispondi citando il messaggio o parte di esso
Old 27-11-2005, 19:17   #10
mercury841
Senior Member
 
Iscritto dal: Nov 2004
Messaggi: 409
Quote:
Originariamente inviato da pinok
Per il database, occhio che anch'io la inserivo "formattata", perchè per mysql andava bene ("2005-11-27") ma questo dava problemi di compatibilità nel caso di porting verso altri DB.
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.
Ma secondo te per la gestione di una data in un database, cosa mi consiglieresti di usare?Perchè se imposto la data come una stringa, no posso fare dei confronti sulle date. Potrei,invece, pensare di implementare la data come un intero?
Per quanto riguarda setDate, a cosa mi serve?
mercury841 è offline   Rispondi citando il messaggio o parte di esso
Old 27-11-2005, 20:11   #11
pinok
Senior Member
 
Iscritto dal: Jun 2001
Città: Alessandria (provincia)
Messaggi: 4772
Quote:
Originariamente inviato da mercury841
Ma secondo te per la gestione di una data in un database, cosa mi consiglieresti di usare?Perchè se imposto la data come una stringa, no posso fare dei confronti sulle date. Potrei,invece, pensare di implementare la data come un intero?
Per quanto riguarda setDate, a cosa mi serve?
Se invece di usare Statement per fare le query/update usi PreparedStatement, puoi definire una query parametrizzata del tipo:

Codice:
pstmt = con.prepareStatement("UPDATE MIA_TABELLA SET DATA_COMPLEANNO=? WHERE LOGIN=?");

pstmt.setDate(1, dataCompleanno);
pstmt.setString(2, "pinok");

pstmt.executeUpdate();
Dove dataCompleanno è un oggetto di tipo java.sql.Date

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)
pinok è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Cybersecurity: email, utenti e agenti IA, la nuova visione di Proofpoint Cybersecurity: email, utenti e agenti IA, la nuo...
Hisense A85N: il ritorno all’OLED è convincente e alla portata di tutti Hisense A85N: il ritorno all’OLED è convi...
Recensione Borderlands 4, tra divertimento e problemi tecnici Recensione Borderlands 4, tra divertimento e pro...
TCL NXTPAPER 60 Ultra: lo smartphone che trasforma la lettura da digitale a naturale TCL NXTPAPER 60 Ultra: lo smartphone che trasfor...
Un fulmine sulla scrivania, Corsair Sabre v2 Pro ridefinisce la velocità nel gaming Un fulmine sulla scrivania, Corsair Sabre v2 Pro...
OnePlus 15: debutto globale con design '...
Amazon Prime: addio alla prova gratuita ...
Windows 11 25H2: guida passo-passo per l...
ECOVACS Deebot Mini sotto i 300€, robot ...
USA chiedono a Taiwan di produrre chip i...
Abbiamo provato Nothing Ear (3), gli aur...
Skoda 110 R elettrica: la storica coupé ...
Snapdragon X2 Elite Extreme: i benchmark...
Electronic Arts (EA) acquisita per 55 mi...
Dopo 30 anni, un modder aggiorna la prim...
Amazon sorprende: iPhone 16 crolla a 699...
Fundo.one, la prima startup finanziata d...
Telegram al centro delle elezioni in Mol...
Densità energetica triplicata ris...
Nuove regole per l'AI di Meta: niente co...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 16:07.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Served by www3v