English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Tutorial Básico do Python

Controle de Fluxo do Python

Função do Python

Tipos de Dados do Python

Operações de Arquivos do Python

Objetos e Classes do Python

Data e Hora do Python

Conhecimento Avançado do Python

Manual de Referência do Python

Data e Hora (datetime) do Python

Neste artigo, você aprenderá a manipular data e hora no Python através de exemplos.

Python tem um módulo chamadodatetimeO módulo, usado para manipular data e hora. Antes de aprofundarmos, vamos criar alguns programas simples relacionados a data e hora.

示例1Obter a data e hora atuais

import datetime
datetime_object = datetime.datetime.now()
print(datetime_object)

Quando você executar o programa, a saída será semelhante a:

2020-04-13 17:09:49.015911

Aqui, usamos a declaração import datetime para importardatetimemódulo.

Uma classe definida no módulo datetime é a classe datetime. Em seguida, usamos o método now() para criar um objeto datetime que contém a data e hora locais atuais.

示例2:Obter a data atual

import datetime
date_object = datetime.date.today()
print(date_object)

Quando você executar o programa, a saída será semelhante a:

2020-04-13

Neste programa, usamos o método today() definido na classe date para obter um objeto data que contém a data local atual.

O que há dentro do datetime?

Podemos usardir()função para obter uma lista de todas as propriedades do módulo.

import datetime
print(dir(datetime))

ao executar o programa, a saída será:

['MAXYEAR', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', '_divide_and_round', 'date', 'datetime', 'datetime_CAPI', 'time', 'timedelta', 'timezone', 'tzinfo']

As classes mais usadas no módulo datetime são:

  • classe date

  • classe time

  • classe datetime

  • classe timedelta

classe datetime.date

Você pode instanciar um objeto data a partir da classe date. O objeto data representa a data (ano, mês e dia).

示例3:Objeto Date que representa a data

import datetime
d = datetime.date(2019, 4, 13)
print(d)

ao executar o programa, a saída será:

2019-04-13

Se você quiser saber, o date() do exemplo acima é o construtor da classe date. O construtor tem três parâmetros: ano, mês e dia.

variávelaé um objeto data.

Somente a classe date pode ser importada do módulo datetime. É assim:

from datetime import date
a = date(2019, 4, 13)
print(a)

示例4:Obter a data atual

Você pode usar um método de classe chamado today() para criar um objeto data que contém a data atual. O método é o seguinte:

from datetime import date
today = date.today()
print("Data atual =", today)

示例5:Obter data a partir do timestamp

Também podemos criar um objeto data a partir de um timestamp. O timestamp Unix é a diferença em segundos entre uma data específica e o UTC1970 ano1mês1segundos entre os dias. Você pode usar o método fromtimestamp() para converter um timestamp em uma data.

from datetime import date
timestamp = date.fromtimestamp(1576244364)
print("日期 =", timestamp)

ao executar o programa, a saída será:

日期 = 2019-12-13

示例6:打印今天的年,月和日

我们可以轻松地从日期对象获取年,月,日,星期几等。就是这样:

from datetime import date
# 今天的日期对象
today = date.today() 
print("当前年:", today.year)
print("当前月:", today.month)
print("当前日:", today.day)

datetime.time

从time类示例化的时间对象表示本地时间。

示例7:表示时间的时间对象

from datetime import time
# time(hour = 0, minute = 0, second = 0)
a = time()
print("a =", a)
# time(hour, minute and second)
b = time(11, 34, 56)
print("b =", b)
# time(hour, minute and second)
c = time(hour = 11, minuto = 34, segundo = 56)
print("c =", c)
# time(hour, minute, second, microsecond)
d = time(11, 34, 56, 234566)
print("d =", d)

ao executar o programa, a saída será:

a = 00:00:00
b = 11:34:56
c = 11:34:56
d = 11:34:56.234566

示例8:打印时,分,秒和微秒

创建time对象后,您可以轻松打印其属性,例如小时分钟等。

from datetime import time
a = time(11, 34, 56)
print("小时=", a.hour)
print("分钟=", a.minute)
print("秒=", a.second)
print("微秒=", a.microsecond)

运行示例时,输出将是:

小时= 11
分钟= 34
秒= 56
微秒= 0

注意,我们还没有传递微秒参数。因此,将打印其默认值0。

datetime.datetime

datetime模块有一个名为date的class类,可以包含来自dateetime对象的信息。

示例9:Python datetime对象

from datetime import datetime
#datetime(year, month, day)
a = datetime(2019, 11, 28)
print(a)
# datetime(year, month, day, hour, minute, second, microsecond)
b = datetime(2019, 11, 28, 23, 55, 59, 342380)
print(b)

ao executar o programa, a saída será:

2019-11-28 00:00:00
2019-11-28 23:55:59.342380

Os três primeiros parâmetros year, month e day do construtor datetime() são obrigatórios.

示例10:Imprimir ano, mês, hora, minuto e timestamp

from datetime import datetime
a = datetime(2019, 12, 28, 23, 55, 59, 342380)
print("Ano =", a.year)
print("Mês =", a.month)
print("Dia =", a.day)
print("Hora =", a.hour)
print("Mês =", a.minute)
print("Timestamp =", a.timestamp())

ao executar o programa, a saída será:

ano = 2019
mês = 12
dia = 28
hora = 23
mês = 55
Timestamp = 1577548559.34238

datetime.timedelta

O objeto timedelta representa a diferença de tempo entre duas datas ou horários.

示例11:Diferença de tempo entre duas datas e horas

from datetime import datetime, date
t1 = date(ano = 2018, mês = 7, dia = 12)
t2 = date(ano = 2017, mês = 12, dia = 23)
t3 = t1 - t2
print("t3 =", t3)
t4 = datetime(ano = 2018, mês = 7, dia = 12, hora = 7, minuto = 9, segundo = 33)
t5 = datetime(ano = 2019, mês = 6, dia = 10, hora = 5, minuto = 55, segundo = 13)
t6 = t4 - t5
print("t6 =", t6)
print("tipo de t3 =", tipo(t3)) 
print("tipo de t6 =", tipo(t6))

ao executar o programa, a saída será:

t3 = 201 dias, 0:00:00
t6 = -333 dias, 1:14:20
tipo de t3 = <class 'datetime.timedelta'>
tipo de t6 = <class 'datetime.timedelta'>

Atenção,t3et6são do tipo <class 'datetime.timedelta'>.

示例12:Diferença de tempo entre dois objetos timedelta

from datetime import timedelta
t1 = timedelta(semanas = 2, dias = 5, horas = 1, seconds = 33)
t2 = timedelta(dias = 4, horas = 11, minutos = 4, seconds = 54)
t3 = t1 - t2
print("t3 =", t3)

ao executar o programa, a saída será:

t3 = 14 dias, 13:55:39

Aqui, criamos dois objetos timedeltat1et2,a diferença direta em dias entre eles é impressa na tela.

示例13:Imprimir objetos timedelta negativos

from datetime import timedelta
t1 = timedelta(segundos = 33)
t2 = timedelta(segundos = 54)
t3 = t1 - t2
print("t3 =", t3)
print("t3 =", abs(t3))

ao executar o programa, a saída será:

t3 = -1 dia, 23:59:39
t3 = 0:00:21

示例14:Duração (em segundos)

Você pode usar o método total_seconds() para obter o número total de segundos em um objeto timedelta.

from datetime import timedelta
t = timedelta(dias = 5, horas = 1, seconds = 33, microseconds = 233423)
print("total seconds =", t.total_seconds())

ao executar o programa, a saída será:

total seconds = 435633.233423

您还可以使用+运算符找到两个日期和时间的总和。同样,您可以将timedelta对象乘以整数和浮点数。

Python格式日期时间

日期和时间的表示方式在不同的地方,组织等中可能有所不同。在美国,使用mm / dd / yyyy更为常见,而在英国使用dd / mm / yyyy更为常见。

Python有strftime()和strptime()方法来处理这个问题。

strftime() do Python-字符串的日期时间对象

strftime()方法是在date、datetime和time类下面定义的。该方法根据给定的日期、日期时间或时间对象创建格式化的字符串。

示例15:使用strftime()格式化日期

from datetime import datetime
# current date and time
now = datetime.now()
t = now.strftime("%H:%M:%S")
print("time:", t)
s1 = now.strftime("%m/%d/%Y, %H:%M:%S
# mm/dd/YY H:M:S 格式
print("s1: ", s1)
s2 = now.strftime("%d/%m/%Y, %H:%M:%S
# dd/mm/YY H:M:S 格式
print("s2: ", s2)

Quando você executar o programa, a saída será semelhante a:

time: 04:34:52
s1: 12/26/2018, 04:34:52
s2: 26/12/2018, 04:34:52

这里%Y,%m,%d,%H等都是格式代码。strftime()方法采用一个或多个格式代码,并根据该代码返回格式化的字符串。

在上面的程序中,ts1es2是字符串。

  • %Y -年[0001,...,2018,2019,...,9999]

  • %m -月[01,02,...,11,12]

  • %d -天[01,02,...,30,31]

  • %H -小时[00,01,...,22,23

  • %M -分钟[00,01,...,58,59]

  • %S -秒[00,01,...,58,59]

要了解有关strftime()代码并设置其格式的更多信息,请访问:strftime() do Python

strptime() do Python-日期时间的字符串

strptime()方法从一个给定的字符串(表示日期和时间)创建一个datetime对象。

示例16:strptime()

from datetime import datetime
date_string = "21 Junho, 2018"
print("date_string =", date_string)
date_object = datetime.strptime(date_string, "%d %B, %Y")
print("date_object =", date_object)

ao executar o programa, a saída será:

date_string = 21 Junho, 2018
date_object = 2018-06-21 00:00:00

Os métodos strptime() têm dois parâmetros:

  1. representando a string de data e hora

  2. igual ao código de formato do primeiro parâmetro

A propósito, os códigos de formato %d, %B e %Y são usados respectivamente para dia, mês (completo) e ano.

visitestrptime() do Pythonpara obter mais informações.

manipulação de fusos horários no Python

Suponha que você esteja trabalhando em um projeto que precise exibir a data e hora com base no fuso horário do projeto. Recomendamos que você use um módulo de terceirosmódulo pytzem vez de lidar com os fusos horários por conta própria.

from datetime import datetime
import pytz
local = datetime.now()
print("Local:", local.strftime("%m",/%d/"%Y, %H:%M:%S")
tz_NY = pytz.timezone('América',/Nova_York') 
datetime_NY = datetime.now(tz_NY)
print("NY:", datetime_NY.strftime("%m",/%d/"%Y, %H:%M:%S")
tz_London = pytz.timezone('Europa',/Londres')
datetime_London = datetime.now(tz_London)
print("Londres:", datetime_London.strftime("%m",/%d/"%Y, %H:%M:%S")

Quando você executar o programa, a saída será semelhante a:

Horário local: 2018-12-20 13:10:44.260462
América/Horário de Nova York: 2018-12-20 13:10:44.260462
Europa/Horário de Londres: 2018-12-20 13:10:44.260462

Aqui,datetime_NYedatetime_LondonÉ um objeto datetime que contém a data e hora atuais com seus respectivos fusos horários.