catalogue
Gets the specified date and time
datetime addition and subtraction
Convert local time to UTC time
datetime Library
datetime is Python's standard library for processing dates and times.
Get current date and time
from datetime import datetime now = datetime.now() print(now) print(type(now))
Note that datetime is a module, and the datetime module also contains a datetime class. The datetime class is imported through from datetime import datetime.
If you import only {import datetime, you must reference the full name} datetime datetime.
datetime.now() returns the current date and time, of type datetime.
Gets the specified date and time
To specify a date and time, we directly construct a datetime with parameters:
from datetime import datetime dt = datetime(2015,4,19,12,20) print(dt)
datetime to timestamp
Let's first understand what is timestamp?
The time of 00:00:00 UTC+00:00 time zone on January 1, 1970 is called epoch time (as for why baidu is recommended)
We define the current time as the number of seconds relative to epoch time, which is called timestamp
Note that Python's timestamp is a floating point number, and integer bits represent seconds.
>>> from datetime import datetime >>> dt = datetime(2015, 4, 19, 12, 20) # Creates a datetime with the specified date time >>> dt.timestamp() # Convert datetime to timestamp 1429417200.0
timestamp to datetime
To convert timestamp to datetime, use the fromtimestamp() method provided by datetime:
1) timestamp and local time are converted
>>> from datetime import datetime >>> t = 1429417200.0 >>> print(datetime.fromtimestamp(t)) 2015-04-19 12:20:00
2) timestamp can also be directly converted to UTC standard time zone:
>>> print(datetime.utcfromtimestamp(t)) # UTC time 2015-04-19 04:20:00
str to datetime
from datetime import datetime cday = datetime.strptime('2015-6-1 18:19:59','%Y-%m-%d %H:%M:%S') print(cday)
datetime to str
from datetime import datetime now = datetime.now() print(now.strftime('%a,%b %d %H:%M'))
datetime addition and subtraction
Adding and subtracting the date and time is actually calculating the datetime back or forward to get a new datetime. You can directly use the + and - operators for addition and subtraction, but you need to import the timedelta class:
>>> from datetime import datetime, timedelta >>> now = datetime.now() >>> now datetime.datetime(2015, 5, 18, 16, 57, 3, 540997) >>> now + timedelta(hours=10) datetime.datetime(2015, 5, 19, 2, 57, 3, 540997) >>> now - timedelta(days=1) datetime.datetime(2015, 5, 17, 16, 57, 3, 540997) >>> now + timedelta(days=2, hours=12) datetime.datetime(2015, 5, 21, 4, 57, 3, 540997)
Convert local time to UTC time
Knowledge points:
Local time refers to the time zone set by the system. For example, Beijing time is UTC+8:00 time zone, and UTC time refers to UTC+0:00 time zone.
We can know that a datetime type has a time zone attribute tzinfo, but the default is None, so we can't distinguish which time zone this datetime is, unless we force a time zone for datetime:
>>> from datetime import datetime, timedelta, timezone >>> tz_utc_8 = timezone(timedelta(hours=8)) # Create time zone UTC+8:00 >>> now = datetime.now() >>> now datetime.datetime(2015, 5, 18, 17, 2, 10, 871012) >>> dt = now.replace(tzinfo=tz_utc_8) # Force to UTC+8:00 >>> dt datetime.datetime(2015, 5, 18, 17, 2, 10, 871012, tzinfo=datetime.timezone(datetime.timedelta(0, 28800)))
Time zone conversion
We can first get the current UTC time through utcnow() and then convert it to the time in any time zone:
# Get the UTC time and force the time zone to UTC+0:00: >>> utc_dt = datetime.utcnow().replace(tzinfo=timezone.utc) >>> print(utc_dt) 2015-05-18 09:05:12.377316+00:00 # astimezone() converts the time zone to Beijing time: >>> bj_dt = utc_dt.astimezone(timezone(timedelta(hours=8))) >>> print(bj_dt) 2015-05-18 17:05:12.377316+08:00 # astimezone() converts the time zone to Tokyo time: >>> tokyo_dt = utc_dt.astimezone(timezone(timedelta(hours=9))) >>> print(tokyo_dt) 2015-05-18 18:05:12.377316+09:00 # astimezone() will bj_dt convert time zone to Tokyo time: >>> tokyo_dt2 = bj_dt.astimezone(timezone(timedelta(hours=9))) >>> print(tokyo_dt2) 2015-05-18 18:05:12.377316+09:00
astimezone() method
astimezone(tz)
Parameters:
-
tz - timezone information which should be changed.
tz - time zone information that should be changed.
-
eg:
-
astimezone(timezone(timedelta(hours=8)))
The timedelta class represents the time difference
td = timedelta(days=1, hours=6) print(td)
collections Library
collections is a collection module built in Python, which provides many useful collection classes.
namedtuple
Tuple can represent an invariant set, and tuple is used to represent a coordinate (I personally think it's a bit like a simple version of class)
eg1:
from collections import namedtuple Point = namedtuple('Point', ['x', 'y']) p = Point(1, 2) p.x #output: 1 p.y #output;2
eg2:
from collections import namedtuple Student = namedtuple("_Student","name,age sex like") stud1 = Student("Zhang San",15,"male","Play basketball") print(stud1)
deque
When using list to store data, it is very fast to access elements by index, but it is very slow to insert and delete elements, because list is linear storage. When the amount of data is large, the insertion and deletion efficiency is very low.
deque is a bidirectional list for efficient insertion and deletion. It is suitable for queues and stacks:
from collections import deque q = deque(['a', 'b', 'c']) q.append('x') q.appendleft('y') q
defaultdict
When using dict, if the referenced Key does not exist, KeyError will be thrown.
If you want to return a default value when the key does not exist, you can use defaultdict:
from collections import defaultdict dd = defaultdict(lambda: 'N/A') dd['key1'] = 'abc' dd['key1'] # key1 exists dd['key2'] # key2 does not exist. The default value is returned
OrderedDict
Because dict is out of order, you can use OrderedDict to maintain the order of keys
from collections import OrderedDict od = OrderedDict([('a', 1), ('b', 2), ('c', 3)]) od # The Key of OrderedDict is ordered
ChainMap
ChainMap can string a group of dicts and form a logical dict. ChainMap itself is also a dict, but when searching, it will find the internal dict in order
from collections import ChainMap values = ChainMap() values['x'] = 3 values = values.new_child() values['x'] = 2 print(values) values = values.new_child() print(values) values['x'] = 1 print(values)
Counter
Counter is a simple counter. For example, count the number of characters:
from collections import Counter c = Counter() for ch in 'programming': c[ch] = c[ch] + 1 c