Newsgroup: it.comp.www.asp
Titolo: Formato data "anomalo"

Ho trasferito una applicazione che sto sviluppando su notebook con XP Pro.
Utilizzo IIS, ASP Classic e SQL Server.
Stessa identica configurazione di tutti gli elementi. Formato data del
sistema operativo: italiana gg/mm/aaaa.
LCID 1040 ovunque (pagina, stringa di connessione, ecc.)
Response.Write Now()
Mi resituisce la data con l'anno a 2 cifre gg/mm/aa ovviamente mandano a
xxxxxx tutte le funzioni.
Qualche suggerimento?
-- 
:: Massimiliano Mattei
:: Project Leader
:: EVA Group :: 
www.evagroup.net
:: Soluzioni extranet :: e-business :: corporate portal

 Qualche suggerimento?
Sì, io cambierei strada.
Lascerei stare quel che ti viene a video, per operare in modo che, 
invece, quelle che chiami "funzioni" lavorino sempre e comunque 
correttamente. 
In qualsiasi server ti trovi, funzionerà comunque.
Anche perchè, suppongo, il sito non vivrà sempre su quel notebook.
Per esempio, il formato ottimale di SQLserver è yyyymmgg, per esempio 
oggi sarebbe 20040426.
Qui il buon Lorenzo Benaglia te lo spiega:
http://italy.mvps.org/MVPs/lbenaglia/LorenzoBenaglia-Tip-
FormatoDate.htm
(tutto in una riga)
------------------------------------------------
Meglio dire a tua madre che fai il pianista 
in un bordello, piuttosto che il webmaster.
------------------------------------------------

Quelle che chiamo funzioni fanno già quello che dici...
Il problema è che bisogna comunque avere un formato di riferimento per
manipolare le date restituite dalle funzioni native vbscript (vedi Date() e
Now()).
Impostando il local identifier a 1040 speravo di ottenere questo... forse
non basta... occorre anche formattare la data.. però non capisco vbscript da
dove prenda le impostazioni di default a questo punto.


 dove prenda le impostazioni di default a questo punto.
Vuoi dire che se pigli una data dal db e fai Day(data), Month(data), 
eccetera eccetera NON ottieni i valori giusti?


NOn è il problema con il DB. Con il DB non ci sono problemi perchè le
funzioni passano le date in formato yyyymmdd hhmm e recuperano le date in
formato 1040 che vengono poi smontate e rimontate in base ai settaggi
dell'utente che può personalizzarzi la data come vuole.
Il problema è proprio nel recupero della data di sistema... :(
Possibile che sia una sorta di bug?.. mi sembra strano. Ho trovato questo
nei vari gruppi...
The Date() function really returns a date - a numeric value.
But you are right, Response.Write Date() sometimes writes a
two-digit year. I actually tried reloading a page that
had it and it kept switching from two to four digit years
over the course of the day!!! We don't know the fix for that,
the only solution we found is to construct a date string ourselves.
So instead of Response.Write Date() we do something like
Response.Write Month(Date()) & "/" Day(Date()) & "/" & Year(Date())
(i am at my home PC now, so the line above maybe not right, but you
get the picture).
Significa che la funzione Year() ti restituirebbe comunque l'anno a 4 cifre
mentre la funzione Date() no.. o quantomeno è random...


E' pazzesco... mentre cercavo di risolvere mi sono accorto che anche altre
funzioni fanno questo casino!
Ad esempio:
dateTemp = DateAdd("H",1,"26/04/2004 22:00")
In dateTemp mi restituisce:
26/04/04 23.00 !!!!!
Bisogna veramente trovare una soluzione lato server perchè credo che sia una
situazione totalmente anomala... risalente al famoso millenium bug...
mettimao che il mio sia un archivio storico, come farei a distringuere 1904
da 2004 in questo caso?
Anche perchè purtroppo usare FormatDateTime() non servirebbe a niente visto
che la data è già in formato breve.


Un ultima informazione č che cambiando i settaggi regionali sul server,
mettendo ad esempio la data in format aaaa/mm/gg il risultato non cambia
(rimane gg/mm/aa) e questo significa che la direttiva @LCID funziona... il
problema č capire perchč viene restituito l'anno a 2 cifre... Ho aggiornato
XP da Home a Pro .. č cosě devastante? :))
Mdac non credo che vengano utilizzate per le funzioni interne oppure si??..
Settaggi di bios addirittura?? Non so piů che pesci prendere, tranne che
questo problema non dovrebbe piů esistere dal passaggio del millenio...


Ok... ecco la radice del male.. risiede nel registro:
[HKEY_CURRENT_USER\Control Panel\International]
"Locale"="00000410"
"sShortDate"="MM/dd/yyyy"
[HKEY_USERS\.DEFAULT\Control Panel\International]
"Locale"="00000410"
"sShortDate"="MM/dd/yyyy"
Nella prima le impostazioni erano corrette, ma nella seconda chiave
risultavano ancora MM/dd/yy!!!
Se non dovesse bastare cambiarle manualmente nel registro, esportate le
chiavi da un pc con la configurazione corretta e importatele nell'altro.
.... no comment..
