IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Tkinter Python Discussion :

Soustraire un integer à une date [Python 3.X]


Sujet :

Tkinter Python

  1. #1
    Candidat au Club
    Homme Profil pro
    employé
    Inscrit en
    Novembre 2023
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : employé
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2023
    Messages : 2
    Par défaut Soustraire un integer à une date
    Bonsoir à tous,

    Cela fait plusieurs jours que je cherche une réponse et malheureusement, je ne trouves pas. (je suis en bon gros début... mais je me soigne)

    Le but de l'application est de calculer un temps d'utilisation/jour sur un nombre de jours.

    je soustrait les compteur horaire actuelle (v3, v1) à celui de la visite précédente (v4, v2) qui s'afficher dans la variable "heure".

    Je place 2 dates: celle d'aujourd'hui et une date précédente
    Prenons 01/01/2024 à aujourd'hui =32 jours qui s'afficher dans la variable "nb_jour" que je dois ensuite retirer un nombre de jours de la variable "hospit".

    petit problème, je me retrouves bloquer à cette étape car je ne peux pas soustraire une date à un str. (ligne 93)

    J'ai testé plusieurs solutions mais rien ne rentre.
    Est ce qu'il faut convertir la variable "hospit" en date, ou inversement convertir la variable "nb_jour" en int?

    Est ce qu'une âme charitable peut me guider sur la voie?

    Merci beaucoup,



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    from tkinter import *
    from datetime import datetime, timezone
    from datetime import timedelta
    from datetime import date
    from dateutil import parser
    from tkcalendar import DateEntry
    
    windows = Tk()
    
    windows.title("mon appli")
    windows.geometry("700x500")
    windows.minsize(700, 500)
    windows.config(background="light green")
    
    
    # Date de visite précédente
    date_vs_pre = Label(windows, text="Date visite précédente : ")
    date_vs_pre.grid(row=1, column=1)
    cal1 = DateEntry(windows, selectmode="day", date_pattern="dd-mm-yyyy")
    cal1.grid(row=1, column=2, padx=10, pady=40)
    
    # Compteur horaire date précédente Appareil 1
    txt2 = Label(windows, text="Compteur horaire visite précédente \n Appareil 1 : ")
    v1= StringVar(value="0")
    entr2 = Entry(windows,textvariable=v1).grid(row=2, column=2, padx=10, pady=15)
    txt2.grid(row=2, column=1)
    
    
    # Compteur horaire date précédente Appareil 2
    txt3 = Label(windows, text="Compteur horaire visite précédente \n Appareil 2 : ")
    v2= StringVar(value="0")
    entr3 = Entry(windows,textvariable=v2).grid(row=3, column=2, padx=10, pady=15)
    txt3.grid(row=3, column=1)
    
    
    # Date de visite actuelle
    date_vs_auj = Label(windows, text="Date visite actuelle : ")
    date_vs_auj.grid(row=1, column=4)
    cal2 = DateEntry(windows, selectmode="day", date_pattern="dd-mm-yyyy")
    cal2.grid(row=1, column=5, padx=10, pady=40)
    
    # Compteur horaire visite actuelle 1
    txt5 = Label(windows, text="Compteur horaire visite actuelle \n Appareil 1 : ")
    v3= StringVar(value="0")
    entr5 = Entry(windows,textvariable=v3).grid(row=2, column=5, padx=10, pady=10)
    txt5.grid(row=2, column=4)
    
    
    # Compteur horaire visite actuelle 2
    txt6 = Label(windows, text="Compteur horaire visite actuelle \n Appareil 2 : ")
    v4= StringVar(value="0")
    entr6 = Entry(windows,textvariable=v4).grid(row=3, column=5, padx=10, pady=10)
    txt6.grid(row=3, column=4)
    
    
    # Nombre de jours d'hospitalisation
    hospit = Label(windows, text="Nombre de jours d'hospitalisation : ")
    v5= StringVar(value="0")
    entr7 = Entry(windows, textvariable=v5).grid(row=4, column=2, padx=10, pady=20)
    hospit.grid(row=4, column=1)
    
    
    # Nombre de jours sur la période
    nb_jour = Label(windows, text="Nombre de jours d'utilisation  : ")
    vjour= StringVar()
    entr8 = Entry(windows,textvariable=vjour).grid(row=4, column=5, padx=10, pady=20)
    nb_jour.grid(row=4, column=4)
    
    
    # Calcul nombre d'heures totales d'utilisation
    heure = Label(windows, text="Nombres totales d'heure")
    v6= StringVar(value="0")
    entr9 = Entry(windows,textvariable=v6).grid(row=5, column=2, padx=10, pady=20)
    heure.grid(row=5, column=1)
    
    
    #calcul entre 2 dates
    b1=Button(windows,text="Calcul", command=lambda :[sum(), my_upd()]).grid(row=8, column=2)
    
    def sum():
        a= int(v3.get())
        b=int(v1.get())
        c=int(v4.get())
        d=int(v2.get())
        e= a-b
        f=c-d
        g=e+f
        v6.set(g)
    
    
    def my_upd():
        diff = (cal2.get_date()-cal1.get_date()).days
        date_hosp= diff-v5
        vjour.set(diff)
    
    
    
    
    windows.mainloop()

    Je m'excuse pour le code qui peut être un poil violent pour les plus aguerri

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 683
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 683
    Par défaut
    Salut

    Pour soustraire un nombre entier de jours à une datetime, on peut utiliser timedelta:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    >>> import datetime as dt
    >>> now = dt.datetime.now()
    >>> now - dt.timedelta(days=10)
    datetime.datetime(2024, 1, 23, 18, 38, 22, 793596)
    >>> now.date() -  dt.timedelta(days=10)
    datetime.date(2024, 1, 23)
    >>>
    et si la question est de convertir la chaine de caractères "10" en l'entier 10:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    >>> int("10")
    10
    >>>
    note: vous pouvez aussi lire la documentation du module datetime histoire d'avoir des idées autres...


    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Candidat au Club
    Homme Profil pro
    employé
    Inscrit en
    Novembre 2023
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : employé
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2023
    Messages : 2
    Par défaut
    Bonjour wiztricks,

    Merci beaucoup de la réponse, effectivement il fallait chercher au bon endroit.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 6
    Dernier message: 20/02/2007, 10h54
  2. [Dates] Soustraire un jour à une date
    Par griese dans le forum Langage
    Réponses: 8
    Dernier message: 24/01/2007, 14h18
  3. [VBA-E] soustraire un jour à une date en VBA
    Par fast&furious dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 04/01/2007, 21h42
  4. Comment soustraire un an à une date
    Par Jense dans le forum Oracle
    Réponses: 12
    Dernier message: 30/06/2006, 15h03
  5. [Dates] Soustraire un nombre de jour à une date
    Par lesgars dans le forum Langage
    Réponses: 2
    Dernier message: 09/12/2005, 14h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo