Newsgroup: it.comp.lang.delphi
Titolo: Problema formto data

Ciao,
mi sapete dire come mai l'istruzione
dataOraCorrente.Caption := DateTimeToStr( now() );
da 01/04/2011 sul mio computer e da 1/4/2011 su un altro computer
(entrambi con win 7) ?
Uso Delphi 7
Grazie

 (entrambi con win 7) ?
Dipende dalle impostazioni di sistema, che vengono lette all'avvio
dell'applicazione.
Saluti
Paolo Arosio

Ok, proverò a forzare il formato data in questo modo
ShortDateFormat := 'dd/mm/yyyy';
Grazie

fedeRagtop62 ha spiegato il 01/04/2011 :

dataOraCorrente.Caption := FormatDateTime( 'dd/mm/yyyy',now );

 ShortDateFormat := 'dd/mm/yyyy';
Fatti un favore: dimentica datetostr e usa SEMPRE formatdatetime.
A.

> Fatti un favore: dimentica datetostr e usa SEMPRE formatdatetime.
scusa l'ignoranza, ma quali sono le controindicazioni?

 scusa l'ignoranza, ma quali sono le controindicazioni?
DateToStr utilizza le impostazioni del computer sul quale il programma 
sta girando, pertanto il suo contenuto puņ cambiare a seconda della 
lingua, della timezone, del separatore ora/minuti.
La stringa tornata non č facilmente trattabile proprio perchč dipende da 
windows a windows e da utente a utente.
Se invece utilizzi formatdatetime, sei tu a decidere il formato e sai 
sempre come si presenta la stringa.
Io, ad esempio, per le date utilizzo sempre YYYYMMDD ed č potentissimo:
1) ci sta in un integer e quindi č intrinsecamente ordinabile
2) lo metti in un database e si presta ad essere indicizzato
3) non č influenzato dalla Culture/Locale settings del computer
-- 
morde
D5,D6,D7
Firebird 2.1
QT 4.7.0 (MingW) QT Creator 2.1

grazie morde, sempre impeccabile e completo, ora dovrò fare un bel
find e replace in tutti i progetti, ciao Brunello

Preciso come al solito ma mancano alcune cosette...
1) In passato ho avuto la *sensazione* che forzare shortdateformat non
sempre garantisse che l'applicativo lo mantiene
2) Sei meno sensibile ai casini che potrebbero capitare se l'utonto
cambia i regional settings DOPO che la tua app e' partita, cosa che
presumo provochi un broadcast a tutte le applicazioni attive.
Ovviamente tu puoi blindare la tua applicazione evitando di farle
processare messaggi di quel tipo, ma se ci pensi fai prima a usare
formatdatetime cosi'  TE NE FOTTI dei regional settings e buonanotte.
3)  Ho personalmente verificato che su una macchina a 64 bit con win7
pur avendo nei regional settings il formato italiano, una piccola app
di test sputa fuori come shortdateformat mm/dd/yyyy...
Questo non succede qua su altri pc win7 a 32bit.
Quando ho scoperto questa cosa mi sono fatto una seria domanda
esistenziale...
No, non e' quella che pensate...
Ho gia deciso che se incontro Cindy Crawford per strada vale la pena
finire a Poggioreale o a San Vittore.
La domanda e':
se su una cosa cretina come shortdateformat abbiamo una differenza
rispetto a xp, quali altre cose risponderanno in modo diverso??
Pensiamo a thread, scm, seriali, tcp, ipc......  Anzi, non pensiamoci
che e' meglio, va... :-((
A.

 rispetto a xp, quali altre cose risponderanno in modo diverso??
E' questo il punto, Alberto, e mi terrorizza: si va ad operare su cose 
su cui non hai il controllo.
Proprio stamane un feed di QT [1] parla di come si debba considerare  il 
discorso della Locale.
Viene citato un articolo [2] dal blog degli sviluppatori di Qt dove 
viene richiesto alla community di indicare al team QT quali siano le 
informazioni che si vorrebbe avere a disposizioni nel trattare con le 
Locals.
Effettivamente il problema delle localizzazioni investe non solo un mero 
datetime, ma anche considerazioni di tipo sociale, quale ad esempio il 
primo giorno lavorativo della settimana, un calendario diverso (cinesi, 
arabi,russi non usano il calendario giuliano), ecc.
Leggi se hai tempo i commenti all'articolo del blog QT e ne spuntano 
delle belle.
[1] 
http://qt-labs.developpez.com/cpp/qlocale-temps-date-langue/
[2] 
http://labs.qt.nokia.com/2011/01/03/qlocale-its-about-time-and-dates-and-languages-and/
Ciao!


 sempre come si presenta la stringa.
E questo è sicuramente un punto a favore, di sicuro se la stringa la
usi internamente (
p.es
. nei log). Se invece la devi mostrare
all'utente, imo andrebbero "rispettati" i suoi desideri su come debba
apparire.
Lasciamo poi perdere eventuali casi di comunicazione con applicazioni
diverse... in questo caso credo la cosa più _portabile_ sia convertire
il tutto in unix time.
Saluti
Paolo Arosio