Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2003
    Messaggi
    698

    Convertire date da un formato ad un altro.

    Sto impazzendo

    Ho una data di partenza, l'unica cosa che conosco di questa data è il formato.
    Nella fattispecie il formato è d/m/Y, ma io devo scrivere una funzione general purpose, percio non si può assumere che il formato sia sempre questo.

    Dalla data di partenza devo ottenere il timestamp. Sembrerebbe facile, perchè esiste la funzione strtotime che fa proprio questo, peccato che lo faccia solo con date in formato us.

    La prima cosa che mi occorre allora è convertire la mia data dal formato X ad un formato US, in modo da poter sfruttare strtotime. Trovo :

    date_parse_from_format, da cui mi potrei ricavare i dati per poter usare strtotime o anche una mktime, ma non la posso usare perchè nel server di produzione c'è php<5.3 e la funzione non è implementata.

    Pazienza, tanto posso usare strptime che fa quasi la stessa cosa! Peccato che se il server gira su windows strptime non è implementata.

    Possibile che non esiste una funzione del tipo
    string funzione ($str_data,$str_format,$str_nuovo_formato) ?

    Che mi posso inventare prima di dovermi scrivere a mano un parser per il mio formato?

    Riassumendo: come ottengo strptime() su windows?


    Grazie!

  2. #2
    se il tuo scopo e' di ottenere un timestamp valido nel tuo time zone allora utilizza mktime()

    Scomponi la stringa della data con explode ed utilizzala per i parametri da passare a mktime()

    Codice PHP:
    $data '5/3/2010';

    list(
    $giorno$mese$anno) = explode('/'$data);
    $data_unix mktime("0""0""0"$mese$giorno$anno); 

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2003
    Messaggi
    698
    Non posso farlo.

    Come ho detto, il formato non è necessariamente d/m/Y, potrebbe cambiare ad esempio in
    d-m-Y o d m Y o altre infinite possibilità.

  4. #4
    Originariamente inviato da Gil Mour
    Non posso farlo.

    Come ho detto, il formato non è necessariamente d/m/Y, potrebbe cambiare ad esempio in
    d-m-Y o d m Y o altre infinite possibilità.
    Spero tu stia scherzando.

    Ma quando mai qualcuno penserebbe di permettere che dei dati (come una data) siano passati con un formato alla muzzo. Come faresti a capire se quello che ricevi e' una data oppure il prezzo della barbera al quintale???? dovrai ben aver un form di ingresso dati. Obbliga l'utente ad utilizzare il formato previsto da te e poi lo modifichi come ti serve.

    Una delle certezze dell'informatica deve essere proprio nella costante del tipo di dati attribuita a dei valori. In altre parole devono scrivere quello che ti serve e non tu a cercare di capire cosa hanno scritto.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  5. #5
    Utente di HTML.it
    Registrato dal
    Feb 2003
    Messaggi
    698
    Spero che tu stia scherzando.

    Se devi gestire l'internazionalizzazione non puoi manipolare le date senza essere flessibile sui formati. D'altronde, se la macchina di produzione che uso girasse su linux, questo problema non si presenterebbe: c'è stato qualcuno cosi spiritoso da scrivere una funzione che fa proprio quello che mi serve.

    Io non voglio che le mie date siano passate alla "muzzo", voglio però che siano conformi ad un set di formati decisi in partenza. In base ai quali il programma capisce quello che deve fare: nella fattispecie, memorizzo i dati astraendomi dai formati intellegibili proprio per essere piu flessibile.
    Secondo te dovrei chiedere all'utente di inserirmi la data di nascita come timestamp ?

    Senno obblighiamo gli utenti a fare cose contro intuitive e contorte come si faceva negli anni 90, e siamo tutti informatici coi fiocchi.

  6. #6
    non quoto perche' non ci capiamo.

    I formati forniti dall'utente possono anche essere infiniti, ma devono essere codificati a priori da te. Non puoi accettare "qualsiasi" formato di data ma solo un set di formati "prestabiliti" e capiti da software.

    rimane poi sempre da capire da una data in arrivo del tipo 02/03/10 quale sia il giorno quale il mese e quale l'anno se non codifichi a priori l'ordine di immissione.

    Era questo che intendevo dire.

    Comunque anche windows gener unix timestamp, l'unica diversita' e che non puo' avere valori negativi e quindi lavorera' con un range ridotto di date rispetto ad un sistema mac/unix

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  7. #7
    Puoi accettare tutti i formati che vuoi, purche':

    1. non siano ambigui
    2. si conoscano tutti a priori

    e' impossibile gestire ogni formato di data possibile senza questi vincoli.

  8. #8
    Utente di HTML.it
    Registrato dal
    Feb 2003
    Messaggi
    698
    Oddio parliamo la stessa lingua e non ci capiamo.

    Quando l'utente inserisce una data io capirò qual'è il giorno, il mese, l'anno, l'ora, i minuti e i secondi perchè nella versione che lui sta usando (cioe nella sua localizzazione) io saprò che la data è formattata come Y-m-d.

    Ma non lo so a priori perchè lui puo cambiare impostazioni di lingua quando gli pare.

    Percio devo essere in grado di convertirla dinamicamente in un timestamp.

    La mia funzione deve essere una roba del genere:

    Codice PHP:
    function date_to_timestamp($data_inserita_da_utente,$formato_della_data); 
    Spero di essermi spiegato meglio

  9. #9
    Utente di HTML.it
    Registrato dal
    Feb 2003
    Messaggi
    698
    Precisazione: non è che i formati me li sto inventando di sana pianta..sono basati sul modello php:
    http://php.net/manual/en/function.date.php

  10. #10
    Originariamente inviato da Gil Mour
    Precisazione: non è che i formati me li sto inventando di sana pianta..sono basati sul modello php:
    http://php.net/manual/en/function.date.php
    Hai il formato ed i valori? Hai una connessione a mysql?

    prova ad usare str_to_date()

    http://dev.mysql.com/doc/refman/5.0/...on_str-to-date

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.