J'essaie de convertir une colonne de chaînes d'horodatage GMT en une colonne d'horodatages dans le fuseau horaire de l'Est. Je veux prendre en compte l'heure d'été.Spark: conversion des horodatages GMT à Eastern en tenant compte de l'heure d'été
Ma colonne de chaînes d'horodatage ressembler à ceci:
'2017-02-01T10:15:21+00:00'
je me suis dit comment convertir la colonne de chaîne en un horodatage dans EST:
from pyspark.sql import functions as F
df2 = df1.withColumn('datetimeGMT', df1.myTimeColumnInGMT.cast('timestamp'))
df3 = df2.withColumn('datetimeEST', F.from_utc_timestamp(df2.datetimeGMT, "EST"))
Mais les temps ne changent pas l'heure d'été. Y at-il une autre fonction ou quelque chose qui compte pour l'heure d'été avec la conversion des horodateurs?
EDIT: Je pense que je l'ai compris. Dans l'appel from_utc_timestamp ci-dessus, je devais utiliser « Amérique/New_York » au lieu de « EST »:
df3 = df2.withColumn('datetimeET', F.from_utc_timestamp(df2.datetimeGMT, "America/New_York"))
Oui, vous avez raison. Vous devez toujours utiliser les formes zone/localité des identificateurs de fuseau horaire. Vous pouvez répondre à votre propre question si vous le souhaitez, bien que ce point particulier ait été abordé de nombreuses fois auparavant (peut-être pas en ce qui concerne les étincelles). –