Programação Python - Criação de um Módulo com Datas

Boa Noite! Estou a realizar um projeto para Fundamentos de Programação cuja linguagem leccionada é Python e estou encalhado. Se alguém me pudesse ajudar ficava imensamente grato! Vou expor então o problema.

É suposto criar um programa que receba uns ficheiro de entrada e dê uns de saída e necessita de um módulo DateTime de modo a que o ficheiro de saída tenha +10 minutos no cabeçalho que o ficheiro de entrada. Infelizmente não posso utilizar o módulo dateTime da biblioteca de módulos do python :/

Os formatos serão, por exemplo, neste formato:

time = "23:55"
day = "30:11:2015"

O que tenho até agora é o split de cada um deles por (":") e a passagem a um número inteiro através da posição criada na lista.

def horasinteiro(time):

t = time.split(":")
return int(t[0])

def minutesinteiro(time):

t = time.split(":")
return int(t[1])


def diainteiro(day):

d = day.split(":")
return int(d[0])

def mesinteiro(day):

d = day.split(":")
return int(d[1])

def anointeiro(day):

d = day.split(":")
return int(d[2])

O meu problema agora é o criar uma função que consiga adicionar 10 minutos pois pode alterar em muito a data, uma vez que isto se for por exemplo entre as 23h50 e as 23h59 irá fazer avançar um dia, que consequentemente poderá fazer avançar um mês(que pode ter 30, 31 ou 28 dias, consoante alguns meses) e poderá ainda fazer avançar um ano.

Mais uma vez, se me conseguirem ajudar ficava eternamente grato! OBRIGADO!
 
Tens uma função que te permite fazer o parse de uma data/hora e converter para datetime: https://docs.python.org/3/library/datetime.html#datetime.datetime.strptime
Pelo que o OP disse, penso que não pode utilizar o DateTime.


Para poderes fazer isto sem DateTime, precisas de uns ifs manhosos. Uma forma minimamente bruta de o fazer seria:

Código:
months = {1:31, 2:28, 3:31, 4:30, 5:31, 6:30, 7:31, 8:31, 9:30, 10:31, 11:30, 12:31}

#data exemplo, na verdade receberias de um input
time = "23:55"
day = "30:11:2015"

#dividir os dias e horas, e transforma-los em inteiros
time_slots =[int(i) for i in time.split(":")]
day_slots =[int(i) for i in day.split(":")]

time_slots[1] += 10

#uns bons ifs para cada caso
if(time_slots[1] > 59):
    time_slots[0] += 1
    time_slots[1] = time_slots[1] - 60

    if(time_slots[0] > 23):
        day_slots[0] += 1
        time_slots[0] = time_slots[0] - 24

        if(day_slots[0] > months[day_slots[1]]):
            day_slots[0] = day_slots[0] - months[day_slots[1]]
            day_slots[1] += 1

            if(day_slots[1] > 12):
                day_slots[2] += 1
                day_slots[2] = day_slots[2] - 12

new_time = str(time_slots[0]) + ":" + str(time_slots[1]) + ":" + str(time_slots[2])
new_date = str(day_slots[0]) + ":" + str(day_slots[1]) + ":" + str(day_slots[2])

Não cheguei a testar, apenas escrevi aqui por isso lê e tira ideias para o que tens já feito. Isto não tem em conta anos bissextos, mas é facil de incluir ;)
 
Última edição:
Back
Topo