Curso Avançado de Desenvolvimento Python
Capítulo
>
Nível
Módulos de String e Tempo
Módulo de Data/Hora
Objetivo
Ajustar registros e configurar datas de envio para os suprimentos utilizando funções do módulo Date & Time.
O piso inferior do anexo da nova área de construção é um armazém que contém alguns dos suprimentos recentemente entregues, que foram embalados e estão prontos para serem enviados para as áreas ao redor da nova construção. Eles precisam ser rotulados com suas datas e horários corretos, e garantir que quaisquer etiquetas que já foram aplicadas tenham todas as informações relevantes. Para fazer isso, poderíamos dedicar tempo para escrever e formatar manualmente datas e horários, mas há uma maneira muito mais rápida de fazer isso utilizando o módulo de data e hora.
O módulo de data e hora é importado escrevendo import datetime, isso desbloqueia uma série de funções poderosas que permitem ler e definir horários e datas formatados que você pode armazenar em objetos. Você também pode usar: from datetime import timezone, timedelta para configurar fusos horários. As seguintes funções são desbloqueadas ao importar o módulo:
datetime.datetime(): Permite definir e armazenar um horário de sua escolha, recebe vários argumentos da seguinte forma:year,month,day,hour,minute,second,microsecond,timezone. Você não precisa inserir todos os argumentos, apenas aqueles que deseja usar.datetime.datetime.now(): Retorna a sua data e hora atual, como apareceria em um relógio.datetime.datetime.date(): Retorna apenas a data do datetime, sem o horário.datetime.datetime.time(): Retorna apenas o horário do datetime, sem a data.datetime.datetime.timestamp(): Retorna o timestamp do datetime como um código UNIX.timezone(): Permite definir um fuso horário para uso com seus argumentos de data e hora.datetime.strftime(): Permite extrair informações específicas de data e hora e formatá-las de acordo com sua preferência, utilizando códigos específicos. Para nossos propósitos, usaremos os seguintes códigos:"%a": Dia da semana, abreviado"%d": Dia do mês"%B": Nome do mês, escrito por extenso"%I": Hora, ciclo de doze horas"%M": Minuto"%p": Meridian, AM/PM"%x": Formato de data local"%X": Formato de hora local"%j": Dia do ano"%U": Semana do ano"%z": Fuso horário UTC
Para começar, dirija-se à marca de X clara e encare a mesa, use a função read() para verificar as datas de embalagem dos embarques, bem como as datas de início e fim dos projetos. Tome nota das datas de início e fim fornecidas no documento (mês/dia/ano). Os três (3) primeiros pontos de dados escritos no memorando, assim como o fuso horário, estão pré-escritos no editor de código para facilitar o uso em funções posteriores.
Neste mesmo espaço, crie uma variável chamada today e armazene nela o valor retornado por datetime.datetime.now(). Use str() para converter o valor em uma string, de forma que fique em um formato legível, assim: today = str(datetime.datetime.now()). Utilize a função display() para registrar a data de hoje no memorando, com isso a data para as alocações de envio estará definida e você poderá começar a adicionar pontos de dados faltantes nas áreas necessárias.
Dirija-se à marca de X dourada ao lado da mesa e, aqui, iremos calcular e registrar o número de dias que este projeto levará. Existem duas variáveis escritas no editor chamadas start e end que armazenam datetime. Anote as datas de início e fim que você leu anteriormente nos espaços fornecidos. Crie uma variável chamada result e armazene nela o resultado da subtração entre as variáveis end e start. Use a função str() para converter o valor em um formato de string legível, assim: result = str(end-start). Utilize a função write() para registrar a variável result, marcando quanto tempo isso levará.
Daqui, vamos nos mover até a marca de X dourada ao lado do tapete vermelho e descer para as marcas de X ao lado das caixas do tapete vermelho na coluna à esquerda. Aqui, adicionaremos partes específicas das datas de embalagem que estão faltando nas caixas, utilizando datetime(). No editor, haverá uma data pré-escrita atribuída à variável red_date, de onde extrairmos vários dados para usar na rotulagem das caixas.
Para os tapetes vermelhos:
-
Na marca de X dourada, encare as caixas e crie uma variável chamada
red_daysarmazenando nela a data sem o horário, usandodate()da variávelred_datee converta-a utilizandostr(), assim:red_days = str(red_date.date()). Use a funçãowrite()para rotular as caixas utilizandored_days. -
Na marca de X clara, encare as caixas e crie uma variável chamada
red_timearmazenando nela o horário sem a data, usandotime()da variávelred_datee convertendo-a comstr(), assim:red_time = str(red_date.time()). Use a funçãowrite()para rotular as caixas utilizandored_time. -
Na marca de X escura, encare as caixas e crie uma variável chamada
red_timestamparmazenando nela o timestamp calculado a partir da variávelred_date, assim:red_timestamp = red_date.timestamp(). Use a funçãowrite()para rotular as caixas utilizandored_timestamp.
Em seguida, vamos nos mover para as marcas de X em frente às caixas do tapete azul. Assim como antes, há uma série de três (3) marcas de X coloridas, neste caso referenciando a variável pré-escrita blue_date para completar os rótulos. Percorra a coluna e utilize a função strftime() para adicionar elementos faltantes aos rótulos de envio. Diferentemente das funções anteriores, esta requer um código específico para extrair e formatar os elementos na data-alvo. Por exemplo, se quisermos obter o dia da semana da variável blue_date, você usará o código "%a" com a função strftime() assim: blue_date.strftime("%a").
Para as marcas de X ao lado das caixas do tapete azul, use a função strftime() com o código específico requerido. Consulte a lista de códigos previamente apresentada de acordo com os requisitos. Para os tapetes azuis:
-
Na marca de X dourada, encare as caixas e crie uma variável chamada
blue_weekdayarmazenando nela o dia da semana, usandostrftime()da variávelblue_dateassim:blue_day = blue_date.strftime("%a"). Crie outra variável chamadablue_daye armazene nela o dia do mês utilizandostrftime()da variávelblue_date. Crie outra variável chamadablue_monthe armazene nela o nome do mês, escrito por extenso, utilizandostrftime()da variávelblue_date. Insira as variáveisblue_weekday,blue_dayeblue_monthna funçãowrite()pré-escrita. -
Na marca de X clara, encare as caixas e crie uma variável chamada
blue_hourarmazenando nela a hora, ciclo de doze horas, usandostrftime()da variávelblue_date. Crie outra variável chamadablue_minutee armazene nela o minuto usandostrftime()da variávelblue_date. Crie outra variável chamadablue_meridiane armazene nela o Meridian, AM/PM, utilizandostrftime()da variávelblue_date. Insira as variáveisblue_hour,blue_minuteeblue_meridianna funçãowrite()pré-escrita. -
Na marca de X escura, encare as caixas e crie uma variável chamada
blue_local_datearmazenando nela o formato de data local, usandostrftime()da variávelblue_date. Crie outra variável chamadablue_local_timee armazene nela o formato de hora local usandostrftime()da variávelblue_date. Insira as variáveisblue_local_date,blue_local_timeeblue_meridianna funçãodisplay()pré-escrita.
Finalmente, vamos nos mover para a marca de X dourada ao lado do tapete verde e descer para as marcas de X ao lado das caixas do tapete verde na coluna à direita. Aqui, continuaremos adicionando partes específicas das datas de embalagem que estão faltando nas caixas utilizando strftime(). No editor, haverá uma data pré-escrita atribuída à variável green_date, de onde extrairmos vários dados para rotular as caixas.
Para os tapetes verdes:
-
Na marca de X dourada, encare as caixas e crie uma variável chamada
green_dayarmazenando nela o dia do ano utilizandostrftime()da variávelgreen_date. Use a funçãowrite()para rotular as caixas utilizandogreen_day. -
Na marca de X clara, encare as caixas e crie uma variável chamada
green_weekarmazenando nela a semana do ano utilizandostrftime()da variávelgreen_date. Use a funçãowrite()para rotular as caixas utilizandogreen_week. -
Na marca de X escura, encare as caixas e crie uma variável chamada
green_timezonearmazenando nela o fuso horário UTC utilizandostrftime()da variávelgreen_date. Use a funçãowrite()para rotular as caixas utilizandogreen_timezone.
Uma vez que todos os rótulos nas marcas de X ao lado dos tapetes coloridos tenham sido registrados, o nível estará completo.