Forum Discussion

Jean-Mi64's avatar
Jean-Mi64
Helper I
2 years ago

Heure locale/UTC

Bonjour

J’ai une colonne « date » appelée « ts » en format Date/heure.

J’ai créé une colonne « heure » à partir de la colonne « ts »

 

Mais je devrais avoir 2 heures de plus.

J’ai récupéré des heures UTC et je voudrais être en heure locale

Merci pour votre aide

Jean Michel

10 Replies

  • Rebonjour, Jean-Mi64 

     

    A partir de l'heure UTC il faut passer en fuseau local avec DateTimeZone.ToLocal puis récupérer l'heure avec Time.From

    Time.From(DateTimeZone.ToLocal([ts]))

    Stéphane

  • Re-Bonjour

    Merci

    J’ai testé mais je n’ai pas le décalage de 2h

     

     

  • Pour moi, la colonne ts n'est pas en UTC, il faut d'abord la convertir avec DateTimeZone.ToUtc

    = Table.TransformColumns(#"Etape précédente",{{"ts", DateTimeZone.ToUtc, type datetimezone}})

    puis créer la nouvelle colonne qui la passera en local

    Time.From(DateTimeZone.ToLocal([ts]))
    ou
    DateTime.Time(DateTimeZone.ToLocal([ts]))

    Stéphane

    • Jean-Mi64's avatar
      Jean-Mi64
      Helper I

      Bonjour 

      Je ne comprends pas ce qu'est "Etape précédente" et la formule avec DateTimeZone.ToUtc

      Merci 

      Jean michel

  • Bonjour

    le principe est d'ajouter une nouvelle étape dans la requête pour convertir la colonne ts en UTC

    le plus simple est de sélectionner cette colonne, menu "transformer" puis "heure" et "heure local"

    cela va ajouter une étape qui utilise la fonction DateTimeZone.ToLocal, mais ce n'est pas ce qu'on souhaite (il n'y a pas la possibilité de choisir directement ToUtc)

     

    il faut donc manuellement remplacer dans la formule DateTimeZone.ToLocal par DateTimeZone.ToUtc
    05/06/2024 09:34:00 +02:00 deviendra 05/06/2024 07:34:00 +00:00

     

    une fois cette colonne ts modifiée en UTC, la formule ci-dessous renverra 9:34

    DateTime.Time(DateTimeZone.ToLocal([ts]))

    Stéphane

    • Jean-Mi64's avatar
      Jean-Mi64
      Helper I

      Bonjour

      Ce n’est toujours pas bon
      Apparemment, il faut lire : relevé à 10h20 (en GMT) mais sur un fuseau GMT +1, donc 11h20

       

      et comme nous sommes en heure d’été, je devrais avoir l’heure affichée à 12:20

      Mais comment afficher cette heure de 12:20 sur power query ?

       

      Merci

      Jean Michel

       

  • Bonjour Jean-Mi64 

    Sauf que dans votre exemple le 3 janvier 2023 était bien à l'heure d'hiver donc +1

    en 2023, vous aurez +1 jusqu'au 25/03/23, puis +2 du 26/03/23 au 28/10/23 et de nouveau +1 jusqu'au 31/12/23.

     

    Stéphane

     

    • Jean-Mi64's avatar
      Jean-Mi64
      Helper I

      Bonjour

      ok ça fonctionne bien.

      Merci beaucoup

      Mais ça a un autre impact car j'avais créé une colonne "nom du jour" à partir de la colonne "ts" (en date/heure).

      Pour obtenir mon graphe, je filtre sur le samedi et dimanche (colonne "nom du jour") et un créneau de 00h00 à 02h00 (colonne "heure") pour ramener certaines valeurs.

      Mais cela me raméne des données heures du vendredi (pour les heures de 00h00 à 02h00)

      En abscisse de mon graphe j'affiche le numéro du jour (ici : 07 qui est vendredi)

       

      Est-ce possible, que le nom du jour suive le décalage +02h00 ?

      Merci

      Jean Michel

       

  • Pour le nom, je pense que c'est le même principe que pour l'heure mais avec la fonction Date.DayOfWeekName

    Date.DayOfWeekName(DateTimeZone.ToLocal([ts]))

     Stéphane

    • Jean-Mi64's avatar
      Jean-Mi64
      Helper I

      Bonjour 

      Ca ne fonctionne pas

       

       

      Il faudrait que j'ai une colonne date qui tienne compte de l'heure locale.

      Exemple ici : 08/06/2024 00:10:00

      et le jour de la semaine se calculera à partir de cette colonne

       

      Merci

      Jean Michel