Χρόνος δεδομένων Python (με παραδείγματα)

Σε αυτό το άρθρο, θα μάθετε να χειρίζεστε την ημερομηνία και την ώρα στο Python με τη βοήθεια παραδειγμάτων.

Η Python έχει μια ενότητα που ονομάζεται datetime για να λειτουργεί με ημερομηνίες και ώρες. Ας δημιουργήσουμε μερικά απλά προγράμματα που σχετίζονται με την ημερομηνία και την ώρα προτού σκάψουμε βαθύτερα.

Παράδειγμα 1: Λήψη τρέχουσας ημερομηνίας και ώρας

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

Όταν εκτελείτε το πρόγραμμα, η έξοδος θα είναι όπως:

 2018-12-19 09: 26: 03.478039

Εδώ, έχουμε εισαγάγει μονάδα δεδομένων χρόνου χρησιμοποιώντας import datetimeδήλωση.

Μία από τις κατηγορίες που ορίζονται στην datetimeενότητα είναι datetimeτάξη. Στη συνέχεια χρησιμοποιήσαμε τη now()μέθοδο για να δημιουργήσουμε ένα datetimeαντικείμενο που περιέχει την τρέχουσα τοπική ημερομηνία και ώρα.

Παράδειγμα 2: Λήψη τρέχουσας ημερομηνίας

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

Όταν εκτελείτε το πρόγραμμα, η έξοδος θα είναι όπως:

 2018-12-19

Σε αυτό το πρόγραμμα, χρησιμοποιήσαμε τη today()μέθοδο που ορίζεται στην dateτάξη για να πάρουμε ένα dateαντικείμενο που περιέχει την τρέχουσα τοπική ημερομηνία.

Τι υπάρχει μέσα στην ώρα δεδομένων;

Μπορούμε να χρησιμοποιήσουμε τη συνάρτηση dir () για να λάβουμε μια λίστα που περιέχει όλα τα χαρακτηριστικά μιας ενότητας.

 import datetime print(dir(datetime))

Όταν εκτελείτε το πρόγραμμα, η έξοδος θα είναι:

 ("MAXYEAR", "MINYEAR", "__builtins__", "__cached__", "__doc__", "__file__", "__loader__", "__name__", "__package__", "__spec__", "_divide_and_round", "ημερομηνία" datetime "," datetime_CAPI "," time "," timedelta "," timezone "," tzinfo ") 

Τα μαθήματα που χρησιμοποιούνται συνήθως στην ενότητα δεδομένων χρόνου είναι:

  • Τάξη ημερομηνίας
  • τάξη χρόνου
  • Μάθημα χρόνου
  • τάξη timedelta

datetime.date Class

Μπορείτε να δημιουργήσετε dateαντικείμενα από την dateτάξη. Ένα αντικείμενο ημερομηνίας αντιπροσωπεύει μια ημερομηνία (έτος, μήνας και ημέρα).

Παράδειγμα 3: Αντικείμενο ημερομηνίας που αντιπροσωπεύει μια ημερομηνία

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

Όταν εκτελείτε το πρόγραμμα, η έξοδος θα είναι:

 2019-04-13

Εάν αναρωτιέστε, date()στο παραπάνω παράδειγμα είναι κατασκευαστής της dateτάξης. Ο κατασκευαστής παίρνει τρία επιχειρήματα: έτος, μήνας και ημέρα.

Η μεταβλητή a είναι ένα dateαντικείμενο.

Μπορούμε να εισαγάγουμε dateκλάση μόνο από την datetimeενότητα. Δείτε πώς:

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

Παράδειγμα 4: Λήψη τρέχουσας ημερομηνίας

Μπορείτε να δημιουργήσετε ένα dateαντικείμενο που περιέχει την τρέχουσα ημερομηνία χρησιμοποιώντας ένα classmethod το όνομα today(). Δείτε πώς:

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

Παράδειγμα 5: Λάβετε ημερομηνία από μια χρονική σήμανση

Μπορούμε επίσης να δημιουργήσουμε dateαντικείμενα από μια χρονική σήμανση. Η χρονική σήμανση Unix είναι ο αριθμός των δευτερολέπτων μεταξύ μιας συγκεκριμένης ημερομηνίας και της 1ης Ιανουαρίου 1970 στο UTC. Μπορείτε να μετατρέψετε μια χρονική σήμανση μέχρι σήμερα χρησιμοποιώντας τη fromtimestamp()μέθοδο.

  from datetime import date timestamp = date.fromtimestamp(1326244364) print("Date =", timestamp) 

Όταν εκτελείτε το πρόγραμμα, η έξοδος θα είναι:

 Ημερομηνία = 2012-01-11

Παράδειγμα 6: Εκτυπώστε το σημερινό έτος, μήνα και ημέρα

Μπορούμε να πάρουμε εύκολα το έτος, τον μήνα, την ημέρα, την ημέρα της εβδομάδας κ.λπ. από το αντικείμενο ημερομηνίας. Δείτε πώς:

  from datetime import date # date object of today's date today = date.today() print("Current year:", today.year) print("Current month:", today.month) print("Current day:", 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, minute = 34, second = 56) print("c =", c) # time(hour, minute, second, microsecond) d = time(11, 34, 56, 234566) print("d =", d) 

Όταν εκτελείτε το πρόγραμμα, η έξοδος θα είναι:

 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("hour =", a.hour) print("minute =", a.minute) print("second =", a.second) print("microsecond =", a.microsecond) 

Όταν εκτελείτε το παράδειγμα, η έξοδος θα είναι:

 ώρα = 11 λεπτό = 34 δευτερόλεπτο = 56 μικροδευτερόλεπτο = 0 

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

datetime.datetime

The datetime module has a class named dateclass that can contain information from both date and time objects.

Example 9: Python datetime object

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

When you run the program, the output will be:

 2018-11-28 00:00:00 2017-11-28 23:55:59.342380 

The first three arguments year, month and day in the datetime() constructor are mandatory.

Example 10: Print year, month, hour, minute and timestamp

  from datetime import datetime a = datetime(2017, 11, 28, 23, 55, 59, 342380) print("year =", a.year) print("month =", a.month) print("hour =", a.hour) print("minute =", a.minute) print("timestamp =", a.timestamp()) 

When you run the program, the output will be:

 year = 2017 month = 11 day = 28 hour = 23 minute = 55 timestamp = 1511913359.34238 

datetime.timedelta

A timedelta object represents the difference between two dates or times.

Example 11: Difference between two dates and times

  from datetime import datetime, date t1 = date(year = 2018, month = 7, day = 12) t2 = date(year = 2017, month = 12, day = 23) t3 = t1 - t2 print("t3 =", t3) t4 = datetime(year = 2018, month = 7, day = 12, hour = 7, minute = 9, second = 33) t5 = datetime(year = 2019, month = 6, day = 10, hour = 5, minute = 55, second = 13) t6 = t4 - t5 print("t6 =", t6) print("type of t3 =", type(t3)) print("type of t6 =", type(t6)) 

When you run the program, the output will be:

 t3 = 201 days, 0:00:00 t6 = -333 days, 1:14:20 type of t3 = type of t6 = 

Notice, both t3 and t6 are of type.

Example 12: Difference between two timedelta objects

  from datetime import timedelta t1 = timedelta(weeks = 2, days = 5, hours = 1, seconds = 33) t2 = timedelta(days = 4, hours = 11, minutes = 4, seconds = 54) t3 = t1 - t2 print("t3 =", t3) 

When you run the program, the output will be:

 t3 = 14 days, 13:55:39 

Here, we have created two timedelta objects t1 and t2, and their difference is printed on the screen.

Example 13: Printing negative timedelta object

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

When you run the program, the output will be:

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

Example 14: Time duration in seconds

You can get the total number of seconds in a timedelta object using total_seconds() method.

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

When you run the program, the output will be:

 total seconds = 435633.233423 

You can also find sum of two dates and times using + operator. Also, you can multiply and divide a timedelta object by integers and floats.

Python format datetime

The way date and time is represented may be different in different places, organizations etc. It's more common to use mm/dd/yyyy in the US, whereas dd/mm/yyyy is more common in the UK.

Python has strftime() and strptime() methods to handle this.

Python strftime() - datetime object to string

The strftime() method is defined under classes date, datetime and time. The method creates a formatted string from a given date, datetime or time object.

Example 15: Format date using 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 format print("s1:", s1) s2 = now.strftime("%d/%m/%Y, %H:%M:%S") # dd/mm/YY H:M:S format print("s2:", s2) 

When you run the program, the output will be something like:

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

Here, %Y, %m, %d, %H etc. are format codes. The strftime() method takes one or more format codes and returns a formatted string based on it.

In the above program, t, s1 and s2 are strings.

  • %Y - year (0001,… , 2018, 2019,… , 9999)
  • %m - month (01, 02,… , 11, 12)
  • %d - day (01, 02,… , 30, 31)
  • %H - hour (00, 01,… , 22, 23
  • %M - minute (00, 01,… , 58, 59)
  • %S - second (00, 01,… , 58, 59)

To learn more about strftime() and format codes, visit: Python strftime().

Python strptime() - string to datetime

The strptime() method creates a datetime object from a given string (representing date and time).

Example 16: strptime()

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

When you run the program, the output will be:

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

The strptime() method takes two arguments:

  1. μια συμβολοσειρά που αντιπροσωπεύει την ημερομηνία και την ώρα
  2. μορφή κώδικα ισοδύναμο με το πρώτο όρισμα

Παρεμπιπτόντως %d, %Bκαι οι %Yκωδικοί μορφής χρησιμοποιούνται για ημέρα, μήνα (πλήρες όνομα) και έτος αντίστοιχα.

Επισκεφτείτε το Python strptime () για να μάθετε περισσότερα.

Χειρισμός ζώνης ώρας στο Python

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

  from datetime import datetime import pytz local = datetime.now() print("Local:", local.strftime("%m/%d/%Y, %H:%M:%S")) tz_NY = pytz.timezone('America/New_York') datetime_NY = datetime.now(tz_NY) print("NY:", datetime_NY.strftime("%m/%d/%Y, %H:%M:%S")) tz_London = pytz.timezone('Europe/London') datetime_London = datetime.now(tz_London) print("London:", datetime_London.strftime("%m/%d/%Y, %H:%M:%S")) 

Όταν εκτελείτε το πρόγραμμα, η έξοδος θα είναι όπως:

 Τοπική ώρα: 2018-12-20 13: 10: 44.260462 America / New_York Time: 2018-12-20 13: 10: 44.260462 Ευρώπη / Λονδίνο ώρα: 2018-12-20 13: 10: 44.260462 

Εδώ, το datetime_NY και το datetime_London είναι αντικείμενα ημερομηνίας που περιέχουν την τρέχουσα ημερομηνία και ώρα της αντίστοιχης ζώνης ώρας.

ενδιαφέροντα άρθρα...