data e mesi [RISOLTO]

Domande a questioni che hanno già trovato una risposta su questo forum

Moderatore: mod Documentazione

franz
membro Junior
membro Junior
Messaggi: 20
Iscritto il: 12/09/2003, 0:00
Località: USA

data e mesi [RISOLTO]

Messaggio da franz »

come si fa a modificare la data in modo tale che appaia nel formato gg/mm/aaaa?

per i mesi? da inglese->italiano

osc2.2m2+ita

grazie!!!
giobertox
membro Baby
membro Baby
Messaggi: 56
Iscritto il: 18/08/2003, 0:00
Località: italia
Contatta:

Messaggio da giobertox »

come aveva detto un cert blk
su che piattaforma hai installato il sito?
io usando una Debian 3.0 ho come valore it_IT@euro

Questo parametro lo setti nel file /catalog/lincludes/languages/italian.php

cerchi la riga
setlocale(LC_TIME, 'it_IT@euro');
e cambi il valore in base a come e' settato sul tuo server.
solo che non va tutto tutto a posto.
Infatti comincia a visualizzare le date in italiano(già buona cosa) sia come parole che come posizioni, ma quando le richiede in scrittura il controllo viene ancora fatto mese/giorno/anno . Almeno questo succede a me

Sto vedendo come si puo fare ..se intanto qualcuno ha idee.. benvenga
BluEdoG
membro Master
membro Master
Messaggi: 1064
Iscritto il: 25/05/2003, 0:00
Località: italia
Contatta:

Messaggio da BluEdoG »

prova con

Codice: Seleziona tutto

@setlocale(LC_TIME, 'it_IT.ISO8859-1');
giobertox
membro Baby
membro Baby
Messaggi: 56
Iscritto il: 18/08/2003, 0:00
Località: italia
Contatta:

??por que?

Messaggio da giobertox »

BluEdoG ha scritto:prova con

Codice: Seleziona tutto

@setlocale(LC_TIME, 'it_IT.ISO8859-1');
?? a che pro??
questo era il valore che esisteva gia da prima, di default.
e va bene se si decide di mettere le date mese/giorno /anno
ma noi stiamo parlando di poter sia leggere le date in italiano
(lunedi al posto di monday )
sia immettere le date in maniera giorno/mese /anno

non penso sia sufficiente (per entrambe le cose ) cambiare quel valore.
Altri suggerimenti?
BluEdoG
membro Master
membro Master
Messaggi: 1064
Iscritto il: 25/05/2003, 0:00
Località: italia
Contatta:

Re: ??por que?

Messaggio da BluEdoG »

dunque, per modificare la data in gg/mm/aaaa lo devi fare modificando all'occorrenza il file di linguaggio (che dovrebbe essere già giusto) italian.php

Codice: Seleziona tutto

@setlocale(LC_TIME, 'it_IT.ISO8859-1');

define('DATE_FORMAT_SHORT', '%d/%m/%Y');  // this is used for strftime()
define('DATE_FORMAT_LONG', '%A %d %B, %Y'); // this is used for strftime()
define('DATE_FORMAT', 'd/m/Y'); // this is used for date()
define('DATE_TIME_FORMAT', DATE_FORMAT_SHORT . ' %H:%M:%S');
in pratica non dovreste aver riscontrato problemi... se poi volete che anche in inglese le date siano uguali all'italiano dovete fare le modifiche di conseguenza.
saluti, Caneblu
[ www.caneblu.com ]
giobertox
membro Baby
membro Baby
Messaggi: 56
Iscritto il: 18/08/2003, 0:00
Località: italia
Contatta:

Re: ??por que?

Messaggio da giobertox »

BluEdoG ha scritto:dunque, per modificare la data in gg/mm/aaaa lo devi fare modificando all'occorrenza il file di linguaggio (che dovrebbe essere già giusto) italian.php


in pratica non dovreste aver riscontrato problemi... se poi volete che anche in inglese le date siano uguali all'italiano dovete fare le modifiche di conseguenza.
ho fatto come dici e mi MOSTRA le date in italiano
(cosa che mi faceva anche col valore che avevo messo prima
setlocale(LC_TIME, 'italian');

il fatto è che IN SCRITTURA prende solo date mm/gg/anno
(ad esempio moificando i dati cel cliente o iscrivendo un nuovo cliente)

ciao
BluEdoG
membro Master
membro Master
Messaggi: 1064
Iscritto il: 25/05/2003, 0:00
Località: italia
Contatta:

Re: ??por que?

Messaggio da BluEdoG »

giobertox ha scritto: il fatto è che IN SCRITTURA prende solo date mm/gg/anno
(ad esempio moificando i dati cel cliente o iscrivendo un nuovo cliente)
beh in scrittura è ovvio, da quello che so io è un passaggio obbligato per scrivere sul db (per convenzione presumo). Anche le cifre hanno una anomalia, la virgola indica le migliaia (per noi il punto) mentre viceversa il punto indica i decimali.
Poi pero' quando vengono ripescati i dati, tutte le date e cifre vegono tradotte in base a quanto scritto nel file italian.php (sia per admin che per catalog). Mi pare che nei siti che ho fatto tutte le date siano nel formato corretto.
saluti, Caneblu
[ www.caneblu.com ]
giobertox
membro Baby
membro Baby
Messaggi: 56
Iscritto il: 18/08/2003, 0:00
Località: italia
Contatta:

Re: ??por que?

Messaggio da giobertox »

beh in scrittura è ovvio, da quello che so io è un passaggio obbligato per scrivere sul db (per convenzione presumo). Anche le cifre hanno una anomalia, la virgola indica le migliaia (per noi il punto) mentre viceversa il punto indica i decimali.
Poi pero' quando vengono ripescati i dati, tutte le date e cifre vegono tradotte in base a quanto scritto nel file italian.php (sia per admin che per catalog). Mi pare che nei siti che ho fatto tutte le date siano nel formato corretto.
ok , allora se è obbligato , lo lascio cosi
(anche per evitare troppi casini con aggiunta di altri moduli.)
grazie
BluEdoG
membro Master
membro Master
Messaggi: 1064
Iscritto il: 25/05/2003, 0:00
Località: italia
Contatta:

Re: ??por que?

Messaggio da BluEdoG »

Probabilmente, anzi sicuramente, puoi modificare le date nel formato italiano direttamente sul mysql, (e di conseguenza scrivere nel formato giusto) ma poi c'è sempre il rischio di "scontrarsi" con altre contribution che usano il formato originale.
saluti, Caneblu
[ www.caneblu.com ]
John
membro Junior
membro Junior
Messaggi: 6
Iscritto il: 01/10/2003, 0:00
Località: ITALIA

Messaggio da John »

Ciao ragazzi, visto che in questo mese ho 'scroccato' un po' di info da voi, ora posto un po' di farina del mio sacco per risolvere il problema della data in 'formato anglosassone' per intenderci (sperando che non fosse già stato risolto in qualche modo).
Premetto che lavoro su OsC 2.2 MS1.

in admin:
----------------------------------------------------
customers.php

intorno alla riga 30

Codice: Seleziona tutto

$sql_data_array = array('customers_firstname' => $customers_firstname,
                                'customers_lastname' => $customers_lastname,
                                'customers_email_address' => $customers_email_address,
                                'customers_telephone' => $customers_telephone,
                                'customers_fax' => $customers_fax,
                                'customers_newsletter' => $customers_newsletter);

        if (ACCOUNT_GENDER == 'true') $sql_data_array['customers_gender'] = $customers_gender;
#if (ACCOUNT_DOB == 'true') $sql_data_array['customers_dob'] = tep_date_raw($customers_dob);
if (ACCOUNT_DOB == 'true') $sql_data_array['customers_dob'] = substr(tep_date_raw($customers_dob), 0, 4) . substr(tep_date_raw($customers_dob), 6, 2) . substr(tep_date_raw($customers_dob), 4, 2);

Codice: Seleziona tutto

        tep_db_perform(TABLE_CUSTOMERS, $sql_data_array, 'update', "customers_id = '" . tep_db_input($customers_id) . "'");
--------------------------------------------------------------------------



in catalog:
----------------------------------------------------
create_account_process.php
account_edit_process.php

intorno alla riga 65

Codice: Seleziona tutto

if (strlen($lastname) < ENTRY_LAST_NAME_MIN_LENGTH) {
    $error = true;
    $entry_lastname_error = true;
  } else {
    $entry_lastname_error = false;
  }

  if (ACCOUNT_DOB == 'true') {
#if (checkdate(substr(tep_date_raw($dob), 4, 2), substr(tep_date_raw($dob), 6, 2), substr(tep_date_raw($dob), 0, 4))) {
if (checkdate(substr(tep_date_raw($dob), 6, 2), substr(tep_date_raw($dob), 4, 2), substr(tep_date_raw($dob), 0, 4))) {


intorno alla riga 260

Codice: Seleziona tutto

$sql_data_array = array('customers_firstname' => $firstname,
                            'customers_lastname' => $lastname,
                            'customers_email_address' => $email_address,
                            'customers_telephone' => $telephone,
                            'customers_fax' => $fax,
                            'customers_newsletter' => $newsletter,
                            'customers_password' => tep_encrypt_password($password),
                            'customers_default_address_id' => 1);

if (ACCOUNT_GENDER == 'true') $sql_data_array['customers_gender'] = $gender; 
#if (ACCOUNT_DOB == 'true') $sql_data_array['customers_dob'] = tep_date_raw($dob);
if (ACCOUNT_DOB == 'true') $sql_data_array['customers_dob'] = substr(tep_date_raw($dob), 0, 4) . substr(tep_date_raw($dob), 6, 2) . substr(tep_date_raw($dob), 4, 2);

-----------------------------------------------------------------------

Ovviamente occorrerà poi andare a correggere i file con le traduzioni , dove si riporta un esempio di data.

Ciao!
Avatar utente
hozone
Amministratore
Amministratore
Messaggi: 1199
Iscritto il: 23/12/2002, 1:00
Località: Italy
Contatta:

Messaggio da hozone »

bene! scrivi un topic con l'intestazione

data e mesi in formato italiano [RISOLTO]

mi raccomando
VideoVideoDoc
membro Junior
membro Junior
Messaggi: 6
Iscritto il: 19/11/2003, 1:00
Località: Roma - Italia
Contatta:

Messaggio da VideoVideoDoc »

La funzione checkDate va modificata anche in /admin/costumer.php
:)
CyberWolf
membro Junior
membro Junior
Messaggi: 2
Iscritto il: 27/11/2003, 1:00
Località: IT

Messaggio da CyberWolf »

Salve a tutti...

Sto usando osCommerce 2.2MS2...

In italian.php ho visto che c'e' una funzione tep_date_raw (che e' la stessa che ho visto elencata nella patch qua sopra).

Mi son chiesto: ma come mai la mettono li' nel file della lingua? Sara' mica quella da modificare per cambiare il formato da mmddyyyy in ddmmyyyy anche nell'inserimento?

Cercando un po' su internet ho trovato qualcuno che suggeriva di cambiare la funzione da

Codice: Seleziona tutto

function tep_date_raw($date, $reverse = false) {
  if ($reverse) {
    return substr($date, 3, 2) . substr($date, 0, 2) . substr($date, 6, 4);
  } else {
    return substr($date, 6, 4) . substr($date, 0, 2) . substr($date, 3, 2);
  }
}
a qualcosa tipo

Codice: Seleziona tutto

function tep_date_raw($date, $reverse = false) {
  if ($reverse) {
    return substr($date, 0, 2) . substr($date, 3, 2) . substr($date, 6, 4);
  } else {
    return substr($date, 6, 4) . substr($date, 3, 2) . substr($date, 0, 2);
  }
}
Ho provato e la cosa pare funzionare... Riesco a registrare gli utenti usando il formato italiano per la data...

Secondo voi la cosa succede per miracolo (tipo perche' in realta' non ho il locale it_IT.ISO8859-1 installato sul mio computer, o roba simile) oppure la cosa ha un senso ed e' affidabile?

Giusto per evitare di ritrovarmi tutti i dati "rovinati" (non era il termine che avrei voluto usare.. )

Grazie, ciao!

Andrea
giobertox
membro Baby
membro Baby
Messaggi: 56
Iscritto il: 18/08/2003, 0:00
Località: italia
Contatta:

Messaggio da giobertox »

Ho provato e la cosa pare funzionare... Riesco a registrare gli utenti usando il formato italiano per la data...

Secondo voi la cosa succede per miracolo (tipo perche' in realta' non ho il locale it_IT.ISO8859-1 installato sul mio computer, o roba simile) oppure la cosa ha un senso ed e' affidabile?

Giusto per evitare di ritrovarmi tutti i dati "rovinati" (non era il termine che avrei voluto usare.. )

Grazie, ciao!

Andrea
no, funziona e stop .
mi ero dimenticato di cercare cmoe avevo risolto io
quindi ribadisco , facendo come hai appena detto poi funziona tutto senza prob
basta cambiare entrambe le pagine italian.php (anche la parte admin) e poi non serve fare altro

Codice: Seleziona tutto

function tep_date_raw($date, $reverse = false) {
 if ($reverse) {
   return substr($date, 0, 2) . substr($date, 3, 2) . substr($date, 6, 4);
 } else {
   return substr($date, 6, 4) . substr($date, 3, 2) . substr($date, 0, 2);
 }
}
ora penso proprio si possa dire che il prob data italiana è RISOLTO

da dove scrivi linuxaro? ;)
[/code]
CyberWolf
membro Junior
membro Junior
Messaggi: 2
Iscritto il: 27/11/2003, 1:00
Località: IT

Messaggio da CyberWolf »

no, funziona e stop .
mi ero dimenticato di cercare cmoe avevo risolto io
quindi ribadisco , facendo come hai appena detto poi funziona tutto senza prob
basta cambiare entrambe le pagine italian.php (anche la parte admin) e poi non serve fare altro
Benissimo! Grazie della info. Anche perche' mi ero dimenticato di modificare anche la parte admin, ehm! :oops:
ora penso proprio si possa dire che il prob data italiana è RISOLTO

da dove scrivi linuxaro? ;)
Acc, l'avatar che mi metto nei forum mi tradisce subito! :-)

Per paranoia e per evitare di impestare il thread con cose inutili, ti mando un PM...

Ciao,

Andrea
Rispondi