Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    260

    [C#] Data UTC rapportata all'Italia

    Ciao a tutti.
    Nel mio codice c# recupero una data espressa come numero di secondi dal 1/1/1970 in formato UTC, che è il fuso orario di riferimento da cui tutti gli altri fusi orari del mondo sono calcolati.
    Ora il mio problema è quello di riportare tale data in formato valido per l'italia che segue certe regole per l'ora legale e l'ora solare, le quali non sono fisse da anno in anno.

    Ho provato cosi' ma non funziona (l'oggetto miaData è stato creato prendendo i secondi):


    codice:
    CultureInfo ci = new CultureInfo("it-IT"); miaData.ToString("G", ci));

    mi ritorna sempre l'ora UTC che differisce da noi 1 o 2 ore ...

    come posso fare?


    grazie 1000

  2. #2
    Per ottenere l'oggetto Date prova ad usare questo metodo; cambia qualcosa?
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3
    Utente di HTML.it L'avatar di gibra
    Registrato dal
    Apr 2008
    residenza
    Italy
    Messaggi
    4,244
    il metodo GetUtcOffset non ti è d'aiuto?
    Vedi la guida per i dettagli.

    Ciao

  4. #4
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    260
    ho risolto con ToLocalTime() che ti trasforma la data col fuso orario giusto del paese in cui ti trovi, mentre con ToUniversalTime() la riporti in formato UTC...
    Mi sto sbagliando?

  5. #5
    Utente di HTML.it L'avatar di gibra
    Registrato dal
    Apr 2008
    residenza
    Italy
    Messaggi
    4,244
    Non ho idea se e dove stai sbagliando, dato che non conosco il tuo codice.
    In effetti la GetUtcOffset non è proprio indispensabile, anche se può risultare utile.

    Ti mostro come ho fatto io, così puoi confrontare con il tuo codice

    codice:
            Dim localZone As TimeZone = TimeZone.CurrentTimeZone
        Dim baseUTC As DateTime = New DateTime(2000, 1, 1, 10, 30, 12)
        Dim localTime As DateTime = localZone.ToLocalTime(baseUTC)
        Dim localOffset As TimeSpan = localZone.GetUtcOffset(localTime)
        Debug.Print("baseUTC    : " + baseUTC)
        Debug.Print("localTime  : " + localTime)
        Debug.Print("localOffset: " + localOffset.ToString)
    ed il risultato è questo:

    codice:
    baseUTC    : 01/01/2000 10.30.12
    localTime  : 01/01/2000 11.30.12
    localOffset: 01:00:00
    Ciao

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.