Visualizzazione dei risultati da 1 a 4 su 4

Discussione: date e fuso orario

  1. #1
    Utente di HTML.it L'avatar di citrus
    Registrato dal
    Feb 2002
    Messaggi
    774

    date e fuso orario

    ciao a tutti,
    sto scrivendo un'applicazione web per l'inserimento a database di spedizioni.
    Questa applicazione verrà utiliazzata tanto in Italia quanto in altre parti del mondo (Honk Kong principalmente).

    Il mio problema quindi è, evidentemente, il fuso orario!

    Vorrei far in modo che tutte le date che verranno scritte sul database abbiano lo stesso Time Zone (quello del server) e che vengano modificate a runtime prima della loro presentazione, a seconda della time zone dell'utente che sta navigando l'applicazione.

    Ho letto alcuni articoli su internet riguardo UTC e le Time Zone ma non sono riuscito a farmi un idea di quali classi usare (e soprattutto come) per gestire questa cosa.

    Potete darmi una mano?
    A qualcuno è già capitato di dover gestire la stessa situazione?

    vi sarò davvero grato per qualsiasi suggerimento

    grazie mille
    citrus

  2. #2
    Moderatore di ASP.net L'avatar di djciko
    Registrato dal
    Nov 2002
    Messaggi
    6,887
    Credo che settando la lingua al momento della presentazione cambino anche tutte le impostazioni dell'applicativo (date, comparazioni di stringhe, alfabeto, rappresentazione della moneta), ma non sono sicuro del fuso orario !

    codice:
            System.Threading.Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(Cultura)
            System.Threading.Thread.CurrentThread.CurrentUICulture = New CultureInfo(Cultura)
    Posso chiederti come farai a provare ?

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    6
    non ho letto come funziona ma forse puoi usare questa:

    System.DateTime.Now.ToUniversalTime()

  4. #4
    Utente di HTML.it L'avatar di citrus
    Registrato dal
    Feb 2002
    Messaggi
    774
    eccomi,
    scusate il ritardo ma ho avuto molto da fare.
    Allora: per il momento il cliente ha rimandato la gestione del fuso orario quindi non avrò ancora la possibilità di misurarmi con questo problema.

    In compenso ho studiato un pochino e la soluzione che avrei adottato è questa:

    prima di tutto bisognerebbe convertire tutte le date attualmente memorizzate nel database in un timestamp su base UTC.

    UTC non è basato sul sitema solare ma sull'orologio atomico quindi non è soggetto a fuso orario. Utilizzare UTC permette all'applicazione di essere spostata su server situati in differenti parti del mondo senza dover aggiustare i fusi orari.

    Il fuso orario diventerebbe quindi solo un problema di presentazione delle date ai client.

    Avevo pensato di memorizzare in una tabella del db tutte le time zone di questo mondo, associando loro un flag che dica se la time zone utilizza l'ora legale o quella solare, ed un altro campo che ci dica da quando a quando avvengono i passaggi.

    Una volta fatto questo avrei scritto una funzione da applicare a tutte le date prima che vengano inviate al client. L'algoritmo in soldoni dovrebbe essere questo:

    1) trasformo il timestamp UTC in un oggetto System.DateTime
    2) leggo dalla sessione (o da db) le informazioni sulla time zone dell'utente
    3) aggiungo o sottraggo alla data il fuso orario
    4) aggiungo o sottraggo alla data l'eventuale ora in più (o in meno) relativa all'uso dell'ora solare /legale.
    5) formatto la data secondo le imopstazioni di localizzazione del client


    Viceversa quando è l'utente ad inserire una data è sufficiente trasformarla in UTC (data universale) prima di memorizzarla sul server.


    Avrei anche aggiunto da qualche parte nell'applicazione una combo box che permetta agli utenti che si spostano frequentemente di modificare la time zone che di default è associata al proprio profilo utente.
    In questo modo ovunque l'utente si trovi puà adattare l'applicativo al fuso orario corrente.


    Purtroppo non ho codice da postare perchè non ho avuto modo di scriverne, ma quando sarà il momento mi preoccuperò di farlo.


    grazie a tutti
    citrus

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.