使用 time 模块展示当前日期和时间 - C2 H1 m0 Y0 x4 ]5 k7 @import time . j$ _0 m. [4 a( m+ u& dfrom time import gmtime, strftime# a0 b& S5 ~( ] r: i8 L* n' y
* K2 h1 ^- O- G: C) H) S+ W
t = time.localtime() ' E* }4 Q. c1 }2 P; }, E% G" t
print (time.asctime(t)) # Sun May 7 09:30:37 2017" E/ F( q8 V) o8 F! S
print(strftime("%a, %d %b %Y %H:%M:%S +0000", gmtime())) # Sun, 07 May 2017 04:00:37 +0000 6 L# i; W1 v/ Iprint(strftime("%A", gmtime())) # Sunday$ S& K& w- H6 N- W- G8 H+ ]
print(strftime("%D", gmtime())) # 05/07/17- m9 M$ J) I* m9 B/ _5 Z) z
print(strftime("%B", gmtime())) # May0 ^8 ?0 S8 ]2 Y# \* F) A) f
print(strftime("%y", gmtime())) # 17 6 i) y+ A5 A" d7 Y( w- r2 o5 _3 z + q# |) p m) i3 d+ D: u# Convert seconds into GMT date . I0 m5 k7 h% Hprint(strftime("%a, %d %b %Y %H:%M:%S +0000", gmtime(1234567890))) # Fri, 13 Feb 2009 23:31:30 +00002 S F' \* y; X2 ?6 j7 a+ O& Z' K
& o% a. T8 g) e" A二、将天、小时、分钟转换为秒 & {% Q1 R$ e# q% _6 j' bSECONDS_PER_MINUTE = 60 7 g C9 L( A1 U' }% USECONDS_PER_HOUR = 3600- K$ a& w% e# |, J
SECONDS_PER_DAY = 86400: V5 s: p/ C2 V1 q
4 B' ]/ b% |- q( |5 w5 r
# 输入天、小时、分钟、秒的数量, K1 @& |/ f$ O; P
days = int(input("Enter number of Days: "))& K/ \9 I# R; x: q9 |; p( v* m
hours = int(input("Enter number of Hours: ")) 8 i2 _- N" q9 w t, Y$ m* b8 Iminutes = int(input("Enter number of Minutes: ")) k, ~5 W! B* E/ _
seconds = int(input("Enter number of Seconds: ")) 5 k/ x! P/ f; T% q6 q4 D7 f4 ] / }' |/ i( m! P& R# 计算 8 o; X5 `+ K2 o: Ltotal_seconds = days * SECONDS_PER_DAY. G& a% B8 t4 f* ?+ y A
total_seconds = total_seconds + ( hours * SECONDS_PER_HOUR) n$ ^" k' X7 i' xtotal_seconds = total_seconds + ( minutes * SECONDS_PER_MINUTE) 5 X4 A1 r1 i) s. |1 O' ototal_seconds = total_seconds + seconds* T/ ]1 d) g! C, ]
) |" V" G0 B* m3 o! Q# 结果 ' y4 d/ H5 ^& q6 q0 Y0 Cprint("Total number of seconds: ","%d"%(total_seconds)) 8 K, H$ R" m4 M% C'''/ k6 A; \/ ]1 \ `7 X1 B' t
Enter number of Days: 5/ b8 e: g$ z7 I' D9 J$ Z J
Enter number of Hours: 361 S2 J M" T2 r
Enter number of Minutes: 24 5 @5 `9 t- S4 l- Q4 O8 lEnter number of Seconds: 15 & v0 n/ E. W; TTotal number of seconds: 563055 w. b, q# X! N( L! \& ?'''7 V6 y/ M6 y' M: Z
/ Z4 S$ n" |7 O- E/ r三、使用 Pandas 获取当前日期和时间 & `- E* L: m p' B- U' e9 I3 I! [import pandas as pd& j) o# Z/ t8 _1 c% v) Q7 A* U
print(pd.datetime.now()) # 2018-01-19 16:08:28.393553$ n2 h1 Z! n* |" Z ^
print(pd.datetime.now().date()) # 2018-01-19' R5 H u; x0 ^3 J w1 T$ H
print(pd.datetime.now().year) # 20183 {+ q ~( F9 m! m" v
print(pd.datetime.now().month) # 13 _5 S0 L8 n6 r& l7 K! r
print(pd.datetime.now().day) # 19 9 j' C6 g; ?* b# ` A% Iprint(pd.datetime.now().hour) # 16. F0 w# L: A4 p0 Z F3 T
print(pd.datetime.now().minute) # 8 ( ?. `9 A: Y; f- ` gprint(pd.datetime.now().second) # 28 % b8 W8 p2 _% w* jprint(pd.datetime.now().microsecond) # 394553 4 ^ ? y5 k# f9 s) K" j 6 @7 W0 c3 c8 S四、将字符串转换为日期时间对象6 W8 X2 f. K2 |# }+ e* g
from datetime import datetime. Z- T2 e& H& I6 K
from dateutil import parser 9 N1 q3 b+ t u: z$ G- }: ` & J% z- k7 _: }d1 = "Jan 7 2015 1:15PM"% z' q' n1 N+ {6 b
d2 = "2015 Jan 7 1:33PM" . B! ]+ b6 x. ]( ~5 I# T6 C8 | D5 ]! l6 O# Z' U4 j
# If you know date format : p/ l4 {4 U) m7 Ydate1 = datetime.strptime(d1, '%b %d %Y %I:%M%p') 4 b0 K! B( F9 C" H5 j( j; r# fprint(type(date1)) # class 'datetime.datetime' n6 ^, U; h) `5 U7 D& d. C: S3 @9 G
print(date1) # 2015-01-07 13:15:00: n% {0 r) C3 u$ c6 B$ n" M( q
7 Y" E& e3 y1 x) _% A) j
# If you don't know date format # A3 k& T! q/ n5 i. |date2 = parser.parse(d2)7 r/ E* Y/ N) x% d: z4 |% ^
print(type(date2)) # class 'datetime.datetime'- t, f2 Y& k4 z, [# N
print(date2) # 2015-01-07 13:33:00 $ D9 ]2 x% e. a% J+ _4 U/ \) N# `2 [; C5 [
五、以毫秒为单位获取当前时间 * \6 o% R5 p `" pimport time ; E" F! Z' B7 X) G) x" A* p0 r5 }+ q ^$ G3 R( D! v: E! d
milliseconds = int(round(time.time() * 1000)) - K i( p8 `+ I Bprint(milliseconds) # 1516364270650 " m9 h- U' P- V. G5 K7 w' M0 d, v + `* [ y/ K% u H六、以 MST、EST、UTC、GMT 和 HST 获取当前日期时间 + a, `- T: ?2 N) Yfrom datetime import datetime % H- n3 H5 h$ [0 o4 c3 ?6 nfrom pytz import timezone( D! P) e- N9 |4 Q7 \
7 T# V; D/ P) H1 e# g$ O
mst = timezone('MST') 2 P% ]$ d, G. [8 x4 X. r: W4 Yprint("Time in MST:", datetime.now(mst)) # Time in MST: 2017-01-19 06:06:14.495605-07:00 5 j4 V }" u! i9 W5 p9 \est = timezone('EST')9 @4 _+ w# {+ g' @8 p
print("Time in EST:", datetime.now(est)) # Time in EST: 2017-01-19 08:06:14.496606-05:00' ~: y# L, g: \* `; ?- W
utc = timezone('UTC') 1 Z5 _2 B- @; F. l$ fprint("Time in UTC:", datetime.now(utc)) # Time in UTC: 2017-01-19 13:06:14.496606+00:00 1 A. g) N7 z9 t% M% k3 C7 |6 \gmt = timezone('GMT') " o" _7 a8 F0 s( Q( Y* Q3 @print("Time in GMT:", datetime.now(gmt)) # Time in GMT: 2017-01-19 13:06:14.496606+00:00- o+ U, e! o9 d- V! m" |# j
hst = timezone('HST')4 ^! R5 J4 T( z9 j
print("Time in HST:", datetime.now(hst)) # Time in HST: 2017-01-19 03:06:14.497606-10:00. f- V G1 X* j N3 B6 k$ f: `6 ?
' M: C ]* u! d! t$ }2 K& ?
七、从给定的日期当中获取星期几1 F/ G$ O+ N: S( @5 z7 {
import datetime 7 k/ ]- t7 E y( L" f7 B 0 o& |, v1 e7 f# @) ydayofweek = datetime.date(2010, 6, 16).strftime("%A") 8 j7 }0 d( R7 X. \( m3 J8 G8 Oprint(dayofweek) # Wednesday 0 @. ^* t7 C* K7 O ' M$ Q+ [6 J( N' G# weekday()方法: 0代表周一,6代表周日 / c9 j" X; X6 Zprint("weekday():", datetime.date(2010, 6, 16).weekday()) # weekday(): 2 + s! i! n& m8 Y j v! R: w& ]# z% i8 @
# isoweekday() 方法: 1代表周一,7代表周日 ; P$ g+ N& n/ _% v+ Kprint("isoweekday()", datetime.date(2010, 6, 16).isoweekday()) # isoweekday() 3, j/ Z4 U* q" S7 m4 m
v( H4 h$ V+ X9 b' M! l6 J" |* Kdayofweek = datetime.datetime.today().strftime("%A") * [' v7 G1 @. b7 I. W/ vprint(dayofweek) # Friday - m! d/ w) z4 i" S3 q) s* eprint("weekday():", datetime.datetime.today().weekday()) # weekday(): 4 * n$ O$ K9 n# w6 Wprint("isoweekday()", datetime.datetime.today().isoweekday()) # isoweekday(): 5( T) n; g9 H! l6 n7 |$ `
: q4 k6 M' r: \" q" D! ?
八、计算两个日期时间对象之间的时差 Y5 j2 q$ h! r f8 R! w/ N
import datetime & v% C" C( Y8 Z( Nfrom datetime import timedelta( ?: k# I$ j* m
( F4 `9 X4 Z8 |+ P4 Q1 H
datetimeFormat = '%Y-%m-%d %H:%M:%S.%f' / V9 {. L. O# K* Idate1 = '2016-04-16 10:01:28.585' 9 R) i w3 l3 w: R, fdate2 = '2016-03-10 09:56:28.067' $ Z# w# w8 @% {4 R9 n$ a) ?diff = datetime.datetime.strptime(date1, datetimeFormat)\ 7 O8 L$ Q: d, Z, E/ J; i - datetime.datetime.strptime(date2, datetimeFormat) 3 i8 X" d2 h# d: S* h2 ?, f, u7 U3 R; c! r. ^ d$ [" s8 T X3 G
print("Difference:", diff) # Difference: 37 days, 0:05:00.518000 7 v! r5 M5 |% c2 R' K9 X. ?print("Days:", diff.days) # Days: 37 9 J7 w8 f& e' y1 Vprint("Microseconds:", diff.microseconds) # Microseconds: 5180009 m: M3 s- i! Y4 t. S3 @0 g
print("Seconds:", diff.seconds) # Seconds: 300 2 f+ Q) ~ ]' X! s. n. A, \+ C- v, r3 U- i& B, K3 t
九、将 5 分钟添加到 Unix 时间戳 ) t5 G% o5 [7 h. j" L2 [5 oimport datetime' X0 X" o( q' S6 s" G
import calendar 1 @9 f6 l' x! Y% ^* V( [( i' i$ X3 Q 4 b) J6 n/ X9 u4 v Bfuture = datetime.datetime.utcnow() + datetime.timedelta(minutes=5) - w2 ^- V8 n! G0 Qprint(calendar.timegm(future.timetuple())) # 1621069619 [# o6 o% c; o# l: U) P4 i 4 i) f0 p! j0 A十、遍历一系列日期 , _$ G p. C8 yimport datetime 1 y6 H8 H+ `* _% x( ^' R# S. D8 P) K+ s6 P ? n
start = datetime.datetime.strptime("21-06-2020", "%d-%m-%Y") & O; ^1 G* n* Z3 Z. g* Yend = datetime.datetime.strptime("05-07-2020", "%d-%m-%Y")+ y* O* u4 ?& H: O
date_generated = [start + datetime.timedelta(days=x) for x in range(0, (end - start).days)]" U# m" M f9 d9 g/ W
- R' t) |( r( ?8 O' `
for date in date_generated:% A1 b" o$ P+ e& x8 R
print(date.strftime("%d-%m-%Y")) 1 R- y* z F# c0 J" w4 x. ` ~1 N5 Q, l) ], e. E
十一、巴黎时间更改为纽约时间- S$ V1 V$ T8 X6 F- M W8 `% N
import pendulum " A0 ?& H2 S- x9 N4 B2 K( T! q/ L# W1 a2 M# a( G2 |
in_paris = pendulum.datetime(2016, 8, 7, 22, 24, 30, tz='Europe/Paris')3 i! D4 T" n3 ^* `! b
print(in_paris) # 2016-08-07T22:24:30+02:00+ p( r# p$ _4 f8 Y- E
) B1 s. i/ \. |3 S) e- l% Q0 V2 Yin_us = in_paris.in_timezone('America/New_York')* r$ ]& ^/ ]9 x9 v6 @) [$ b: B
print(in_us) # 2016-08-07T16:24:30-04:00/ K$ l8 W7 z" z4 c5 a) s- w& q6 s
* D* D- u4 q4 S0 [& _# p: [" n
十二、使用 Python 获得最后7个工作日 2 ]; i7 M+ w0 cfrom datetime import date9 j7 l0 Q4 t+ F- b) K
from datetime import timedelta ( j0 K; S' D9 ` h6 f8 c & D3 K S- J; ^1 f6 D& Ptoday = date.today() # d- w6 F' g. z5 K+ a - \6 `, [0 ]/ Y! n6 ffor i in range(7): i# K9 y0 Z+ S6 O+ Q, c
d = today - timedelta(days=i)7 d$ d( y' p$ E; t) X
if d.weekday() < 5: ( z8 a8 \8 r; R6 h. ^2 |* ^ print(d) 8 y& J8 {1 f8 ? s: ?$ a* y2 R3 n' S$ P$ l& p/ x) ]9 V: o4 }2 ^
十三、从今天的日期和一个人的生日推算年龄6 [1 i6 [3 K) a/ Q' v
from datetime import date! q& @' O0 m8 f) [( `
! w% u; M6 a. V; v- m7 p5 u& ]8 f9 E+ q
def calculate_age(born):& V; _1 c) j7 j# D
today = date.today() ' m1 ?; }; h$ x( h- p2 w try:6 G( z5 U$ L) Q. K
birthday = born.replace(year=today.year)/ w! R" J/ J( K
except ValueError:# `, q s' R, ~ j6 k7 F5 D& Y
birthday = born.replace(year=today.year, month=born.month + 1, day=1)5 P+ A2 V) B( X4 k$ L
if birthday > today: - L: W) Q8 _2 J# G! w) R return today.year - born.year - 1 ) h7 t2 F1 h. d2 p else: . ~5 I+ p- p. I P4 Z3 X return today.year - born.year : W8 K8 _* {' Y0 Z- c& s& W 8 T; F% Q/ t+ X$ K& Z, R* {2 H* b% L) T1 G9 i7 Z9 l1 F% @
print(calculate_age(date(2001, 3, 1))) 0 ?1 T7 X: \1 v7 m3 O% m/ e) k) i$ R I _8 p( x! x+ d- v% b7 q, f
十四、获得本月的第一个星期二: M4 {& U; g. ~# A1 s/ s
import calendar' m7 L2 I% q/ i# q* @) C2 x
from datetime import datetime5 _' N: |7 t4 s, ? w
! b7 h7 {6 o6 B( x1 ~! e7 P% Oc = calendar.Calendar(firstweekday=calendar.SUNDAY)0 i$ B- {6 v' v$ Y7 k. t4 S2 k
monthcal = c.monthdatescalendar(datetime.today().year, datetime.today().month)% @7 R) p. Z3 Q9 m3 q- K3 {
#Python小白学习交流群:153708845 9 @2 D' `8 R" }$ \try:- [* `2 ~( t+ y" E& i! [4 E' b
tues = [day for week in monthcal for day in week if8 _/ A- W: r6 G4 N/ @& c
day.weekday() == calendar.TUESDAY and day.month == datetime.today().month][0]7 I; y, `' t4 v7 b9 F% R
print(tues)1 J+ Q* k# {7 [, b
except IndexError:. p( N [4 L9 A4 n
print('No date found')2 m9 X% z! b) i& D5 g7 P5 o
( c, P, p& e5 Z7 [
十五、将整数转换为日期对象0 b( T: O/ q) ]/ E, u% w) T3 \
from datetime import datetime; s- Y6 r s" r8 M
" |9 b% n$ t: _ j5 k
i = 15457300732 ~ G/ l0 B9 A' W' N
timestamp = datetime.fromtimestamp(i) ! W; M2 a3 r9 o 0 d7 B0 s" K7 w" m$ l- N5 m# u3 Mprint(timestamp) # 2018-12-25 14:57:53: U; m7 X9 o9 u) I( _" Z( H) y- a
print(type(timestamp))/ p, E( l; [2 x* I6 k% N
+ O' G6 k" A" X# G2 x' I2 \( h十六、当前日期减去 N 天的天数" w, O: H8 y, l: D) X
from datetime import datetime, timedelta & Y: k% B( q: d: R5 I* C4 L* s$ M. D- j( F& p6 K2 N: h7 s
d = datetime.today() - timedelta(days=5)6 |+ s$ l2 ]* W& }) D
print(d) / \; v" c h. @5 _/ { * Z- a( m: c: ^0 j十七、比较两个日期 0 [0 O; u, L( l B6 Vimport datetime ; j5 F. i( ?! ~4 G ( S3 ?( [+ n& k) L) ca = datetime.datetime(2020, 12, 31, 23, 59, 59)6 a4 i4 _' Y* g2 v! x; K+ |6 T
b = datetime.datetime(2020, 11, 30, 23, 59, 59) & f( l9 Y0 v" h. X4 V; t5 d# f: G( Y( A5 f: ]
print(a < b) ( {7 V. g0 X9 G) u/ D% fprint(a > b) ) S% f- {, [* y $ D% I9 U8 L" ]; k7 M/ Z十八、从 datetime 对象中提取年份 J+ j$ C, ?" E/ A' Dimport datetime ( P) d1 _5 g8 p1 F2 F% z# _6 c; w ( W3 S! ^ z; |* E2 {3 @( N/ m! Ayear = datetime.date.today().year' Y+ ]. i, W, r& }7 K0 ?
print(year) ; e/ `( R9 Q: n/ q2 M& E& @: V- v) m
十九、根据日期找到星期几, q" K- w3 ^# R( l* q. y5 l
import pendulum , C4 n4 Z/ ]) V& R+ O 3 w- S, X& C/ g- c. M& K% t9 mdt = pendulum.parse('2021-05-18') - S; R1 Y: s5 g3 u% ?0 L9 vprint(dt.day_of_week) # 2 : y! {+ P3 J$ e" @$ p, C$ Y4 W! e - w; y* V5 K. S0 g6 \dt = pendulum.parse('2021-05-01')( M5 p8 D2 A8 K8 g6 G# Q" U
print(dt.day_of_week) # 6 2 W8 j& O, }" r1 p' U2 I) g. l, s; ^4 R* n
dt = pendulum.parse('2021-05-21')0 Q% w& u1 `: R6 N
print(dt.day_of_week) # 5 % {' d: j# n3 y m& V+ ^- g$ f$ F 6 d Y! }2 e' K% C' K二十、从当前日期获取 7 天前的日期 ; ~0 \9 x2 ?' u3 e% l @7 xfrom datetime import datetime, timedelta * P6 `3 P8 ]: Z3 H4 F9 W% P9 x, G$ E$ \0 \8 V1 x6 [, j0 ]
now = datetime.now(), o9 }" B5 X+ T+ @# x+ z- f5 z
2 m6 o. w. [. @, ~3 \( U, v$ u5 Afor x in range(7): 2 U& Z# N$ J! Q; l7 k/ U d = now - timedelta(days=x) r) f0 W( g! o R! h3 W
print(d.strftime("%Y-%m-%d")) % i8 [2 A' N9 O ' i/ r, F" v3 I3 u/ ?二十一、将两个日期时间对象之间的差值转换为秒 4 j3 P* t1 G) U U4 K1 r& Kimport datetime # E+ c7 D; o+ |1 B 3 T! j: E: D# W6 I, |1 l5 j" [time1 = datetime.datetime.strptime('19 01 2021', '%d %m %Y') * L/ ?, m. d9 S' Stime2 = datetime.datetime.strptime('25 01 2021', '%d %m %Y')) ?6 c- U; J! J) j2 x" J/ s( [- @7 u
# o$ n( [: D3 |, X1 v8 i- M
difference = time2 - time1 7 I* Q, M8 ]. Q: d) k9 p; K8 |print(difference) # 6 days, 0:00:003 z+ R' b* [9 c
4 i! I& V5 m* f" h
seconds = difference.total_seconds()- T+ _" C( r) `% t/ s" D
print(seconds) # 518400.0$ R4 }! b( C) O* Z
4 K- L: a0 z0 K
二十二、获得任何一个月的第N个星期五: I. D+ Z* Y) z0 j8 ^! t
import calendar F4 P9 T$ [8 f1 _9 S2 c |; x) K6 Y* b( L5 P
# 取2021年5月的第三个星期五 ) E; t7 | \; t+ H, |2 ]7 v5 U Fc = calendar.Calendar(firstweekday=calendar.SUNDAY) i1 i/ P9 m3 i" I, P. Oyear = 2021 1 L; [, z# I) Y6 f9 u# z2 b9 h- H, b' ]month = 55 r0 l0 G& R8 b# K3 k+ ^0 v' A5 u) o
n = 2 # 取第三个2 T4 w( x4 B$ _' i; Y' t. {
monthcal = c.monthdatescalendar(year, month)6 {0 Y2 g. N) f& T) J5 B/ U
9 f3 o; S* |5 K, ^- q) j5 z& I" Q
try: % Z6 C/ r2 J6 a4 `6 E: u third_friday = [+ O) \5 d) S( n5 v0 F' Z n
day for week in monthcal 5 I2 X1 D; o# D8 v; _$ k- V
for day in week if; r$ n6 Z- d" B8 ^* T8 V
day.weekday() == calendar.FRIDAY and day.month == month * d( a' o6 w$ ~+ z1 z+ N$ D9 _ ][n]7 k; ]7 \6 N# v5 E
print(third_friday) # 2021-05-21 }' l$ H0 }$ h( pexcept IndexError:3 t6 T* f/ A6 Y2 U3 |: X
print('No date found') 2 J9 u$ z7 t8 r3 {+ g " `& s% M/ }4 Z二十三、根据周数获取日期 & w+ i$ }$ l% K8 u6 \ Mimport datetime6 @) ]9 K9 i C$ n7 j1 |+ h' s
from dateutil.relativedelta import relativedelta 2 M: t# ^( B. K( E + N2 I- k/ j% V6 U7 n2 k& Yweek = 25 + N Z" t* [9 C1 l$ Myear = 2021' V0 L$ c8 ? ^9 ]
date = datetime.date(year, 1, 1) + relativedelta(weeks=+week)% Q" R7 t% [$ D! v9 p- w
print(date) # 2021-06-25$ C( H6 k& @0 D: R' j7 i. |! W