Πώς να υπολογίσετε τη διαφορά ώρας στην Python

Όταν εργάζεστε με ημερομηνίες και ώρες στην Python, θα πρέπει συχνά να υπολογίζετε τη διαφορά ώρας. Σε αυτό το σεμινάριο, θα μάθετε πώς να υπολογίζετε τη διαφορά μεταξύ δύο χρονικών σφραγίδων σε ώρες, λεπτά και δευτερόλεπτα.

Μέχρι το τέλος αυτού του σεμιναρίου, θα έχετε μάθει:

  • πώς να χρησιμοποιήσετε την ενότητα datetime της Python για να εργαστείτε με ημερομηνίες και ώρα,
  • τι είναι τα αντικείμενα timedelta και πώς είναι χρήσιμα και
  • υπολογίστε τη διαφορά ώρας μεταξύ οποιωνδήποτε δύο χρονικών σφραγίδων—σε ώρες, λεπτά και δευτερόλεπτα.

Ας αρχίσουμε.

Πώς να χρησιμοποιήσετε την ενότητα ημερομηνίας της Python

Για να εργαστείτε με ημερομηνίες και ώρες στην Python, θα χρησιμοποιήσετε τη λειτουργική μονάδα datetime. Η ενότητα datetime είναι μέρος της τυπικής βιβλιοθήκης Python. Έτσι, μπορείτε να προχωρήσετε και να το εισαγάγετε στο περιβάλλον εργασίας σας αμέσως, ως εξής:

import datetime

Για να υπολογίσετε τη διαφορά ώρας, πρέπει να δημιουργήσετε δύο διαφορετικές χρονικές σημάνσεις. Μπορείτε να επιλέξετε να δημιουργήσετε:

  • δύο αντικείμενα ημερομηνίας,
  • δύο χρονικά αντικείμενα, ή
  • ένας συνδυασμός αντικειμένων ημερομηνίας και ώρας—ημερομηνία ώρας.

Πώς να δημιουργήσετε ένα αντικείμενο ημερομηνίας στην Python

Ας εισαγάγουμε την κλάση ημερομηνίας από την ενότητα datetime. Για να δημιουργήσετε ένα αντικείμενο ημερομηνίας στην Python, μπορείτε να χρησιμοποιήσετε τη γενική σύνταξη datetime.date(,,). Ακολουθεί ένα παράδειγμα δημιουργίας αντικειμένου ημερομηνίας date1:

from datetime import date
date1 = datetime.date(2022,3,27)
print(date1)

# Output: 2022-03-27

Μπορείτε να δοκιμάσετε τον κώδικα στον μεταγλωττιστή grtechpc.org Python για δοκιμή. Ή, εγκαταστήστε την Python στον υπολογιστή σας.

Όπως φαίνεται παραπάνω, όταν εκτυπώνετε την ημερομηνία, διαμορφώνεται σε μορφή ΕΕΕΕ-ΜΜ-ΗΗ για ημερομηνίες.

Σημείωση: Βεβαιωθείτε ότι έχετε καθορίσει τον μήνα ως ακέραιο χωρίς κανένα μηδενικό. Είναι πιθανό να έχετε συνηθίσει να προσθέτετε ένα μηδενικό στην αρχή του μήνα όταν καταγράφετε ημερομηνίες.

  Post Covid' Special Free Online

Για παράδειγμα, για να καθορίσετε μια ημερομηνία τον Ιούνιο, τον 6ο μήνα του έτους: χρησιμοποιήστε το 6 και όχι το 06.

Για παράδειγμα, δοκιμάστε να εκτελέσετε το ακόλουθο απόσπασμα κώδικα—όπου ο μήνας έχει αναφερθεί ως 03 αντί για μόλις 3. Θα δείτε ότι παρουσιάζει ένα Συντακτικό Σφάλμα όπως φαίνεται:

date1 = datetime.date(2022,03,27)

print(date1)

# Error Message
File "<ipython-input-12-6eb72084e6ce>", line 1
    date1 = datetime.date(2022,03,27)
                                ^
SyntaxError: invalid token

Ας δούμε τώρα πώς να δημιουργήσουμε ένα αντικείμενο χρόνου στην Python.

Πώς να δημιουργήσετε ένα αντικείμενο χρόνου στην Python

Για να δημιουργήσουμε ένα αντικείμενο χρόνου, ας εισάγουμε την κλάση χρόνου. Οποιοδήποτε χρονικό αντικείμενο Python μπορεί να δημιουργηθεί χρησιμοποιώντας την κλάση χρόνου καθορίζοντας τα ακόλουθα χαρακτηριστικά κλάσης: ώρα, λεπτό, δευτερόλεπτο και μικροδευτερόλεπτο.

Ωστόσο, όλα αυτά τα χαρακτηριστικά είναι προαιρετικά. Εάν δεν καθορίσετε ένα συγκεκριμένο χαρακτηριστικό, ας πούμε, δεύτερον, έχει οριστεί στο 0 από προεπιλογή.

Το παρακάτω απόσπασμα κώδικα δείχνει πώς μπορείτε να δημιουργήσετε ένα time object time1. Όπως και με το αντικείμενο ημερομηνίας, μπορείτε να εκτυπώσετε το αντικείμενο ώρας για να δείτε τη μορφοποιημένη ώρα.

from datetime import time
time1 = datetime.time(13,27,45,4600)
print(time1)

# Output: 13:27:45.004600

Πώς να δημιουργήσετε ένα αντικείμενο ημερομηνίας στην Python

Όπως μπορείτε να δείτε, το αντικείμενο ημερομηνίας δεν έχει πληροφορίες σχετικά με την ώρα. Και το αντικείμενο ώρας δεν περιέχει πληροφορίες σχετικά με την ημερομηνία.

Ωστόσο, στην πράξη, θα χρειαστείτε πληροφορίες για την ημερομηνία και την ώρα. Επομένως, συνιστάται να χρησιμοποιήσετε την κλάση datetime.

Μπορείτε να αποκτήσετε πρόσβαση στην κλάση datetime και να δημιουργήσετε αντικείμενα datetime στην Python, όπως φαίνεται παρακάτω:

dt1 = datetime.datetime(2022,3,27,13,27,45,46000)
print(dt1)

# Output: 2022-03-27 13:27:45.046000

Ας δημιουργήσουμε τώρα ένα άλλο αντικείμενο datetime dt2 χωρίς το δεύτερο χαρακτηριστικό. Μπορείτε να δείτε ότι έχει οριστεί στο 0 – η προεπιλεγμένη τιμή.

dt2 = datetime.datetime(2022,6,30,14,28)
print(dt2)

# Output: 2022-06-30 14:28:00

Μέχρι στιγμής έχετε μάθει πώς να δημιουργείτε χρονικές σημάνσεις στην Python—ως ημερομηνίες, ώρες και ημερομηνίες. Ήρθε η ώρα να δούμε πώς μπορείτε να υπολογίσετε τη διαφορά μεταξύ οποιωνδήποτε δύο χρονικών σφραγίδων.

Μεταβείτε στην επόμενη ενότητα για να μάθετε.

  Πώς να αλλάξετε τη φωτογραφία ομαδικής συνομιλίας στα μηνύματα σε iPhone και iPad

Πώς να χρησιμοποιήσετε το αντικείμενο timedelta στην Python

Στην Python, το timedelta υποδηλώνει ένα χρονικό διάστημα. Είναι η διαφορά μεταξύ δύο αντικειμένων ημερομηνίας, ώρας ή ημερομηνίας ώρας.

Εάν προσθέσετε ή αφαιρέσετε δύο αντικείμενα ημερομηνίας, ώρας ή ημερομηνίας ώρας, θα λάβετε ένα αντικείμενο timedelta. Αυτό το αντικείμενο timedelta έχει χρήσιμα χαρακτηριστικά και μεθόδους που μπορούν να βοηθήσουν στον υπολογισμό της διαφοράς ώρας.

Ας προχωρήσουμε και ας υπολογίσουμε τη διαφορά μεταξύ των δύο αντικειμένων ημερομηνίας dt1 και dt2.

dt1 = datetime.datetime(2022,3,27,13,27,45,46000) 
dt2 = datetime.datetime(2022,6,30,14,28) 
tdelta = dt2 - dt1 
print(tdelta) 
print(type(tdelta)) 

# Output 
95 days, 1:00:14.954000 
<class 'datetime.timedelta'>

Από το παραπάνω απόσπασμα κώδικα, μπορείτε να δείτε ότι η μεταβλητή tdelta διατηρεί τη διαφορά ώρας μεταξύ dt1 και dt2. Και ο τύπος tdelta επαληθεύεται ότι είναι της κλάσης timedelta χρησιμοποιώντας το ενσωματωμένο της Python τύπος() λειτουργία.

Τώρα ας κωδικοποιήσουμε ένα άλλο παράδειγμα.

Πώς να βρείτε τη διαφορά ώρας μεταξύ δύο ημερομηνιών

Ας πάρουμε ένα απλό αλλά ενδιαφέρον παράδειγμα.

Πρόβλημα: Για να υπολογίσετε τη διαφορά ώρας μεταξύ της τρέχουσας ημερομηνίας (σήμερα) και των γενεθλίων σας.
Για να το κάνετε αυτό, ορίστε τη σημερινή ημέρα ως την πρώτη χρονική σήμανση και τα γενέθλιά σας ως τη δεύτερη χρονική σήμανση.

Ως πρώτο βήμα, ας δημιουργήσουμε δύο αντικείμενα ημερομηνίας:

  • ένα για σήμερα, ας το πούμε σήμερα, και
  • άλλο για τα γενέθλιά σου, ας το πούμε bday

Η κλάση datetime έχει τη μέθοδο now() που σας δίνει την τρέχουσα τοπική ημερομηνία και ώρα. Ας το χρησιμοποιήσουμε, λοιπόν, get today—την ημερομηνία αναφοράς μας.

today = datetime.datetime.now()
print(today)

# Sample Output: 2022-01-22 09:10:18.489538

Στον παρακάτω κώδικα, αντικαταστήστε το bday με τα γενέθλιά σας για να υπολογίσετε τον χρόνο που απομένει για τα γενέθλιά σας φέτος.

Εάν το διαβάζετε αφού περάσουν τα γενέθλιά σας, μη διστάσετε να ορίσετε το bday στα επόμενα γενέθλιά σας.

bday = datetime.datetime(2022,8,30,11,59)
print(bday)

# Sample Output: 2022-08-30 11:59:00

Το επόμενο βήμα είναι ο υπολογισμός του time_diff που είναι ένα αντικείμενο timedleta, όπως εξηγήθηκε νωρίτερα. Απλώς αφαιρέστε τη σημερινή ημέρα από τη μέρα σας και θα έχετε τη διαφορά ώρας.

time_diff = bday - today
print(f"Your birthday is in {time_diff}")

# Output
Your birthday is in 220 days, 2:46:00.127416

Για να μάθετε τον αριθμό των ημερών που απομένουν, χρησιμοποιήστε το χαρακτηριστικό days στο time_diff, όπως φαίνεται:

tdays = time_diff.days
print(f"Your birthday is in {tdays} days.")

# Output
Your birthday is in 220 days.

Πώς να βρείτε τη διαφορά ώρας σε δευτερόλεπτα

Ας υπολογίσουμε τώρα πόσα δευτερόλεπτα απέχουν τα γενέθλιά σας.

  8 καλύτερα εργαλεία για τη δημιουργία σύγχρονης επιχείρησης κοινότητας και μελών

Για να υπολογίσετε τη συνολική χρονική διαφορά σε δευτερόλεπτα, χρησιμοποιήστε τη μέθοδο total_seconds() στο αντικείμενο timedelta time_diff.

tsecs = time_diff.total_seconds()
print(f"Your birthday is {tsecs} seconds away.")

# Output
Your birthday is 19017960.127416 seconds away.

Λοιπόν, είναι πολύ μεγάλη αναμονή!

Τούτου λεχθέντος, τώρα ξέρετε πώς να υπολογίσετε τη διαφορά ώρας μεταξύ οποιωνδήποτε δύο χρονικών σφραγίδων σε δευτερόλεπτα.

Ας επανεξετάσουμε τώρα κάποια βασικά και ας σημειώσουμε τα παρακάτω. Μια μέρα αποτελείται από 24 ώρες, μια ώρα είναι 60 λεπτά και 60 δευτερόλεπτα αποτελούν ένα λεπτό.

Αυτό συνοψίζεται στην παρακάτω εικόνα:

Ώρες, λεπτά και δευτερόλεπτα

Έτσι, για να μετατρέψετε από δευτερόλεπτα σε λεπτά, ώρες και ημέρες, μπορείτε να χρησιμοποιήσετε τον παρακάτω πίνακα και να διαιρέσετε με τον αντίστοιχο συντελεστή μετατροπής.

Πίνακας μετατροπής χρόνου

Στις επόμενες ενότητες, ας μετατρέψουμε τη διαφορά ώρας σε δευτερόλεπτα σε λεπτά και ώρες.

Πώς να βρείτε τη διαφορά ώρας σε λεπτά

Για να λάβετε τη διαφορά ώρας σε λεπτά, χρειάζεται μόνο να διαιρέσετε τα συνολικά δευτερόλεπτα με το 60.

Ας διαιρέσουμε τα tsec με το 60 και ας τα αποθηκεύσουμε σε μια μεταβλητή που ονομάζεται tmins, όπως αυτή:

tmins = tsecs/60
print(f"Your birthday is {tmins} minutes away.")

# Output
Your birthday is 316966.0021236 minutes away.

Πώς να βρείτε τη διαφορά ώρας σε ώρες

Τώρα που έχετε υπολογίσει τη διαφορά ώρας σε λεπτά, μπορείτε να τη διαιρέσετε με έναν παράγοντα 60 για να λάβετε τη διαφορά σε ώρες. Ή μπορείτε να διαιρέσετε τα συνολικά δευτερόλεπτα με 60*60 = 3600.

thrs = tsecs/(60*60)
print(f"Your birthday is {thrs} hours away.")

# Output
Your birthday is 5282.76670206 hours away.

Έτσι, τώρα μάθατε πώς να υπολογίζετε τη διαφορά ώρας σε οποιαδήποτε μονάδα της επιλογής σας.

συμπέρασμα

Σε αυτό το σεμινάριο, έχετε μάθει πώς να:

  • δημιουργία και εργασία με ημερομηνίες και ώρες χρησιμοποιώντας την ενότητα datetime της Python,
  • χρησιμοποιήστε αντικείμενα timedelta για να λάβετε ένα χρονικό διάστημα ή διαφορά ώρας και
  • υπολογίστε τη διαφορά ώρας σε δευτερόλεπτα, λεπτά και ώρες.

Ελπίζω να βρήκατε αυτό το σεμινάριο χρήσιμο. Τώρα που ξέρετε τα πάντα για τον υπολογισμό της διαφοράς ώρας στην Python, ήρθε η ώρα να εξασκήσετε τις δεξιότητές σας.

Καλή μάθηση και κωδικοποίηση!

Μάθετε πώς να γράφετε ίσο ή όχι ίσο με κώδικα ή να φτιάξετε ένα παιχνίδι φιδιού σε python εδώ.