Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Recensione Nothing Phone 4(a): sempre iconico ma ora più concreto
Recensione Nothing Phone 4(a): sempre iconico ma ora più concreto
Nothing con il suo nuovo Phone 4(a) conferma la sua identità visiva puntando su una costruzione che nobilita il policarbonato. La trasparenza resta l'elemento cardine, arricchita da una simmetria interna curata nei minimi dettagli. Il sistema Glyph si evolve, riducendosi nelle dimensioni ma aumentando l'utilità quotidiana grazie a nuove funzioni software integrate e notifiche visive. Ecco tutti i dettagli nella recensione completa
Corsair Vanguard Air 99 Wireless: non si era mai vista una tastiera gaming così professionale
Corsair Vanguard Air 99 Wireless: non si era mai vista una tastiera gaming così professionale
Nelle ultime settimane abbiamo provato la Corsair Vanguard Air 99 Wireless, una tastiera tecnicamente da gaming, ma che in realtà offre un ampio ventaglio di possibilità anche al di fuori delle sessioni di gioco. Flessibilità e funzionalità sono le parole d'ordine di una periferica che si rivolge a chi cerca un prodotto capace di adattarsi a ogni esigenza e ogni piattaforma
Ecovacs DEEBOT T90 PRO OMNI: ora il rullo di lavaggio è ampio
Ecovacs DEEBOT T90 PRO OMNI: ora il rullo di lavaggio è ampio
DEEBOT T90 PRO OMNI abbina un sistema di aspirazione basato su tecnologia BLAST ad un rullo di lavaggio dei pavimenti dalla larghezza elevata, capace di trattare al meglio le superfici di casa minimizzando i tempi di lavoro. Un robot completo che riesce anche ad essere sottile e garantire automazione ed efficienza nelle operazioni di pulizia di casa
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 26-11-2005, 23: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 27-11-2005, 00: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 27-11-2005, 00: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, 01: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, 11: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 11:24.
mercury841 è offline   Rispondi citando il messaggio o parte di esso
Old 27-11-2005, 14: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, 14: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, 17: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, 17: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, 20: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, 21: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


Recensione Nothing Phone 4(a): sempre iconico ma ora più concreto Recensione Nothing Phone 4(a): sempre iconico ma...
Corsair Vanguard Air 99 Wireless: non si era mai vista una tastiera gaming così professionale Corsair Vanguard Air 99 Wireless: non si era mai...
Ecovacs DEEBOT T90 PRO OMNI: ora il rullo di lavaggio è ampio Ecovacs DEEBOT T90 PRO OMNI: ora il rullo di lav...
Recensione Samsung Galaxy S26 Ultra: finalmente qualcosa di nuovo Recensione Samsung Galaxy S26 Ultra: finalmente ...
Diablo II Resurrected: il nuovo DLC Reign of the Warlock Diablo II Resurrected: il nuovo DLC Reign of the...
AMD sceglie Samsung come fornitore princ...
Gli utenti Intel possono dire addio all'...
NVIDIA: raggiungeremo almeno 1 triliardo...
Lenovo presenta workstation e server con...
Nuova BMW i3: la Serie 3 elettrica debut...
NVIDIA torna in Cina: stretto un accordo...
Vibe coding nel mirino di Apple: ecco le...
Smart TV QLED 50'' a un super prezzo: 4K...
Horizon Worlds lascia i visori Quest: Me...
Lexar compie 30 anni e cambia le regole ...
Questo SSD fornisce memoria aggiuntiva a...
PlayStation Portal si aggiorna: arriva l...
Akamai, le API nel mirino dei cyber atta...
Spider-Man: Brand New Day, finalmente on...
La serie TV di Hitman è ufficialmente fe...
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: 07:40.


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