Convertendo objetos de data e hora em segundos em Python
Ao trabalhar com objetos de data e hora em Python, muitas vezes é necessário convertê-los em segundos para vários fins analíticos. No entanto, o método toordinal() pode não fornecer a saída desejada, pois apenas diferencia datas com dias distintos.
Para converter com precisão um objeto datetime em segundos, especialmente para a data específica de 1º de janeiro de 1970, existem várias opções disponíveis. Para todas as outras datas de início, você precisará calcular a diferença de horário entre as duas datas.
Para 1º de janeiro de 1970:
datetime.datetime.timestamp(): Este método retorna diretamente o número de segundos desde a época Unix, que corresponde a 00:00:00 UTC de janeiro 1, 1970.
t = datetime.datetime(1970, 1, 1)
seconds = t.timestamp()
time.mktime(): A função time.mktime() também pode ser usada para converter um objeto datetime em segundos desde a época Unix.
import time
t = datetime.datetime(1970, 1, 1)
time_struct = t.timetuple()
seconds = time.mktime(time_struct)
Para qualquer outra data de início:
timedelta.total_seconds (): Subtrair dois objetos datetime resulta em um objeto timedelta. O método total_seconds() de timedelta fornece o número de segundos entre as duas datas.
t = datetime.datetime(2009, 10, 21, 0, 0)
starting_date = datetime.datetime(1970, 1, 1)
seconds = (t - starting_date).total_seconds()
É importante observar que a data de início deve ser especificada em UTC (Tempo Universal Coordenado) para resultados precisos. Se sua data e hora não estiver em UTC, você precisará convertê-la ou anexar uma classe tzinfo com o deslocamento apropriado.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3