% v/ m- o( c( L二、将天、小时、分钟转换为秒* d% r2 p/ k2 {2 o
SECONDS_PER_MINUTE = 60 & E; g$ B' O& ^* KSECONDS_PER_HOUR = 3600 7 a8 f" x5 L- Z- g% f4 kSECONDS_PER_DAY = 86400 - J F9 P$ H6 J6 m: j: o6 i- h& l3 E1 ^, s: N' k
# 输入天、小时、分钟、秒的数量5 m L" }- n6 |1 k, ~
days = int(input("Enter number of Days: ")) 9 y- K9 l& W/ b0 j$ |$ Zhours = int(input("Enter number of Hours: "))% w/ x t4 K' E+ X( h+ g4 m
minutes = int(input("Enter number of Minutes: ")) 9 ]2 O+ i( J* \% h3 J% e1 b) A! fseconds = int(input("Enter number of Seconds: "))& p6 B/ E# h) _
E0 w# u8 j+ ?4 M: B9 B5 U$ I% V. w# 计算 8 i" }( _$ h2 D: f1 Ktotal_seconds = days * SECONDS_PER_DAY 2 W. [; ]; C2 u6 z. }- \total_seconds = total_seconds + ( hours * SECONDS_PER_HOUR) 2 A, J) x* Z% s9 Jtotal_seconds = total_seconds + ( minutes * SECONDS_PER_MINUTE)1 H8 Q- s8 k- ~+ R% C0 `; v
total_seconds = total_seconds + seconds# Z* Z$ f& Q+ g( g1 L1 G5 L, a0 x
U' Z1 o( u% j" C) H. R& m m6 _# 结果 8 l: G0 w7 X# Yprint("Total number of seconds: ","%d"%(total_seconds)) . d/ w" |8 \" A* d'''2 v. P8 g B8 V. ~- P6 E7 Y; S- D
Enter number of Days: 5 + }7 Y" t* U. m5 [7 [9 m2 ?$ u! \+ GEnter number of Hours: 363 D' w$ Y' t9 j5 Z: E% {
Enter number of Minutes: 248 h) ^& r$ l$ a0 l
Enter number of Seconds: 15 6 _) B- M" U5 N; qTotal number of seconds: 563055; W! C0 {: o, y: }
'''- _* E7 s3 V! Z+ |- `+ V
& n4 |: c- X( l, d Y- N5 h/ s( N三、使用 Pandas 获取当前日期和时间! p. e* e/ o+ A9 i
import pandas as pd 4 B; I; F% d p) l1 f, b& Eprint(pd.datetime.now()) # 2018-01-19 16:08:28.393553 2 B. p- K: x" F7 K$ q1 W6 |print(pd.datetime.now().date()) # 2018-01-19' h9 X; P ?7 \6 {8 k8 H
print(pd.datetime.now().year) # 2018& W6 j, X9 B, s, S0 o
print(pd.datetime.now().month) # 1( m) z/ _3 o; o) b" z
print(pd.datetime.now().day) # 19/ [- Q6 D) q" E0 l/ w
print(pd.datetime.now().hour) # 16! c8 L0 D1 T3 v7 f$ p0 ~! s' T# b
print(pd.datetime.now().minute) # 83 N5 ?% D# Y$ O A) ]* W) j
print(pd.datetime.now().second) # 28" _4 U3 K5 L( e* j5 T- q
print(pd.datetime.now().microsecond) # 394553 & }6 m7 @; l0 U6 o+ ?: N( s% r8 {3 g0 c; o3 o& }# y$ J6 U, l
四、将字符串转换为日期时间对象 x; r: M/ D& A; a; V2 |3 yfrom datetime import datetime 1 `- _$ O6 x9 y/ Jfrom dateutil import parser . _) k5 T4 B) v( D" X1 a* l8 r/ q. C- ?; Z
d1 = "Jan 7 2015 1:15PM"8 e8 ^/ t( l, g
d2 = "2015 Jan 7 1:33PM"" E @* b. G5 {' v6 U" ?! W
; w( D6 R3 [' v' ` M# z- ?' l3 D+ \
# If you know date format6 Q2 c. e U n
date1 = datetime.strptime(d1, '%b %d %Y %I:%M%p')5 I" s6 h6 r' r' J, {/ d
print(type(date1)) # class 'datetime.datetime'; D8 `/ o6 ^$ v. O
print(date1) # 2015-01-07 13:15:00 " G# r& ^$ X! T% \; P& b/ E $ @+ l8 l: [, s3 Z6 s- }# If you don't know date format# f2 x+ W* D* j9 i7 k3 R
date2 = parser.parse(d2) : E$ @0 i$ V+ z u: u9 b2 kprint(type(date2)) # class 'datetime.datetime'9 c/ l5 u1 r# j# Q8 ]+ ?6 g& T
print(date2) # 2015-01-07 13:33:00 0 {, B/ L2 y5 G+ x% R; n) M0 l* m# M0 ~5 g1 h
五、以毫秒为单位获取当前时间! v$ H9 e1 B+ @2 g Y0 J
import time 8 J" z5 R% {, G ! P5 C% y; R5 L- Q7 N8 j) r9 f8 [milliseconds = int(round(time.time() * 1000))+ w( Y3 V% X" Q6 ], F1 A N; O: r
print(milliseconds) # 1516364270650 7 \; K! r6 r& E6 B, n* ~6 D$ H8 Y" e
六、以 MST、EST、UTC、GMT 和 HST 获取当前日期时间 ( \! r, e+ J8 [, X" ]from datetime import datetime 7 e$ f# ?" f3 Z- T7 h3 v& afrom pytz import timezone 4 j8 M% T) H' \3 E0 Y7 d4 l E6 o. w0 ~) `# E0 c7 z" \% Lmst = timezone('MST') % @6 ?3 N: v% e z! Q+ b% |print("Time in MST:", datetime.now(mst)) # Time in MST: 2017-01-19 06:06:14.495605-07:003 ?. K+ I4 u5 o F
est = timezone('EST') : J1 Z4 p1 L V+ p! ^2 qprint("Time in EST:", datetime.now(est)) # Time in EST: 2017-01-19 08:06:14.496606-05:00! {2 W6 g: Y/ b8 v Y7 i
utc = timezone('UTC') 0 r* F& Y+ ~. q6 v+ a% X8 _& Xprint("Time in UTC:", datetime.now(utc)) # Time in UTC: 2017-01-19 13:06:14.496606+00:00. A a% o b! Y: |1 m
gmt = timezone('GMT')$ r, J# a1 `; q, y# L! s
print("Time in GMT:", datetime.now(gmt)) # Time in GMT: 2017-01-19 13:06:14.496606+00:005 a) W' z" v8 `9 L$ E6 X6 P
hst = timezone('HST') 4 o; @9 F; D3 V: T* p- rprint("Time in HST:", datetime.now(hst)) # Time in HST: 2017-01-19 03:06:14.497606-10:00- p1 j' U1 G3 W
( Z! g. g4 F- R
七、从给定的日期当中获取星期几/ O7 E4 O" A- G, ?- o$ F& q( E
import datetime! Q0 Y- x+ n& L2 A, D8 t, ~7 S0 I
7 I [! q4 P9 s( t$ j% }! g8 Sdayofweek = datetime.date(2010, 6, 16).strftime("%A") 0 h. h* n _" K7 e2 G- o4 [ ?print(dayofweek) # Wednesday 8 P) _2 q* a) c, l8 W 8 P* s/ h' Y" l5 y$ C& U+ U$ |# weekday()方法: 0代表周一,6代表周日 * ~3 T+ f: Q- C% g& k2 g8 e" Oprint("weekday():", datetime.date(2010, 6, 16).weekday()) # weekday(): 2 / I1 F7 Z) [0 x( g. m" S; J( v6 [1 @' N! `) z8 O. x
# isoweekday() 方法: 1代表周一,7代表周日5 b1 O# g1 [0 v4 k: t6 B
print("isoweekday()", datetime.date(2010, 6, 16).isoweekday()) # isoweekday() 39 ^: b' a s6 }1 ?3 ?" S; Q5 F
2 l1 p% D0 o J& Zdayofweek = datetime.datetime.today().strftime("%A") ' G9 Y) b# |) s- G3 m# zprint(dayofweek) # Friday& q$ {5 r1 \ [9 L
print("weekday():", datetime.datetime.today().weekday()) # weekday(): 4 5 F6 C) P6 g2 o D* w1 R4 ^print("isoweekday()", datetime.datetime.today().isoweekday()) # isoweekday(): 5 ' j" k# L) g& E! j4 v' n4 Z" ~# C# f! N
八、计算两个日期时间对象之间的时差) o* W2 a% L/ y: v. Y/ B0 h
import datetime % N! Y3 J# k% ]from datetime import timedelta- {( e2 U! W& {
8 g, ]8 j. _& ?8 C9 Q8 S+ Z d
datetimeFormat = '%Y-%m-%d %H:%M:%S.%f'$ x7 b. ?" @! x5 B. n6 s2 @
date1 = '2016-04-16 10:01:28.585' ' [2 i0 u {' u3 T8 T0 r7 [+ f# Odate2 = '2016-03-10 09:56:28.067'/ A C7 h7 \- b% n
diff = datetime.datetime.strptime(date1, datetimeFormat)\ ) I( G8 }' X! A/ G2 ] - datetime.datetime.strptime(date2, datetimeFormat) , z, a3 e6 s1 O3 X5 I5 n+ g+ |4 i. R- j" y7 X/ H. o
print("Difference:", diff) # Difference: 37 days, 0:05:00.518000 ( z; f' ?6 \. j5 z7 Eprint("Days:", diff.days) # Days: 37* r2 N0 T5 M" Q- c- @& ~! Q
print("Microseconds:", diff.microseconds) # Microseconds: 518000; y0 v7 y9 i% t: t9 f
print("Seconds:", diff.seconds) # Seconds: 300 # i {$ E" A6 ?+ ?0 U# K6 t; c, u; x4 u4 q
九、将 5 分钟添加到 Unix 时间戳/ k6 |; h6 s8 p
import datetime ' G' Y0 Y) E3 m' w# K# `1 Fimport calendar % f( [; f- b: @$ p. j8 |# M" v 4 `- ?! q7 o) } [: ffuture = datetime.datetime.utcnow() + datetime.timedelta(minutes=5)# O+ r; c+ p( x4 R2 ^: f' |# ]6 ?
print(calendar.timegm(future.timetuple())) # 1621069619 $ e& H: |: B( ^1 L) F . l. `7 w" z7 g4 |- ?十、遍历一系列日期 # d0 J& i: u% A9 @" `import datetime. L4 d; h2 f) t+ j: D' e
- u- G! q& x( I, K: \ Q4 H
start = datetime.datetime.strptime("21-06-2020", "%d-%m-%Y")* [' S9 D. p! y/ S- c' O
end = datetime.datetime.strptime("05-07-2020", "%d-%m-%Y") 9 E. E* w- I' t3 h, _date_generated = [start + datetime.timedelta(days=x) for x in range(0, (end - start).days)] 0 u3 s, e- L4 U; H( s 6 ]1 g3 a4 d) R0 w6 A3 L$ D# rfor date in date_generated:: W7 ?# J1 A; q7 O4 b4 L
print(date.strftime("%d-%m-%Y")) ) F ?7 @. T8 n' K2 e$ H3 A' B0 [' a% A& _
十一、巴黎时间更改为纽约时间 # X' F1 a0 o& [! a& nimport pendulum . h1 S/ V+ z) c9 g+ z4 @# e . i& q. v* J# L. c1 P1 cin_paris = pendulum.datetime(2016, 8, 7, 22, 24, 30, tz='Europe/Paris')" I( j9 L: i4 o. I
print(in_paris) # 2016-08-07T22:24:30+02:00 & n3 \4 s. a/ L+ A v- V% G/ ?& d% z+ ?2 p
in_us = in_paris.in_timezone('America/New_York'). }) y! s$ Z$ m0 I a
print(in_us) # 2016-08-07T16:24:30-04:00. y. C; T+ U7 F2 x) K
! C/ W+ d* v- C: q" y; d' d十二、使用 Python 获得最后7个工作日 & o, x( e/ E: U/ i% ]from datetime import date 3 Q1 A( g. p+ [1 u, m3 |from datetime import timedelta, p3 w" m; }% Y3 ]$ `; o8 W( V
8 p1 i( ?* y8 V1 m5 U
today = date.today()/ k' G, l y$ k6 w# M. o g
# Y/ C' z( y! u/ t; F! o7 B: ^. Dfor i in range(7):3 l/ a" C# D/ Y0 ~0 V& L- G3 R
d = today - timedelta(days=i) 3 G/ F) ^4 S/ P' G4 r0 l if d.weekday() < 5:$ s! P3 \" w: O* Y! A+ {/ W
print(d) * R. [7 ]( ~: V1 k* X- I9 B4 G5 _2 Q5 }$ O( q& q' u
十三、从今天的日期和一个人的生日推算年龄 . T/ N" `; \! ffrom datetime import date6 j% |) }9 h; `, e. u% T
- e0 f) M" e. A% b* N
% X6 m5 ?* h7 x* s4 h% {; z3 odef calculate_age(born):+ ]) `6 |& G: h* @4 n) \
today = date.today() 5 `9 C4 B5 J7 E- l& z* ? try:- J; w) \+ k( U: U% ^7 h8 l" t
birthday = born.replace(year=today.year)0 O% V; o# [7 x- ?
except ValueError: ) `8 E' k; I4 B4 P! o$ {; o+ n birthday = born.replace(year=today.year, month=born.month + 1, day=1)2 c7 z4 K+ y2 I# z# l0 h( w* J
if birthday > today:' H0 F: Y# U3 z% _: u4 U
return today.year - born.year - 1 : P; |* x% y9 [, _& j9 g else: 3 Z. m3 s; Z4 E* q5 c7 A" n return today.year - born.year & [1 m" ^$ ~8 ~6 I2 z; B6 H D 7 I- K9 B1 ^( j% F, J 9 `3 ]0 T4 A4 q0 A1 L2 Sprint(calculate_age(date(2001, 3, 1))) ! g! K4 r: W" E% p8 X/ C5 ^7 p . E) p* Y4 h4 [% d ?十四、获得本月的第一个星期二; E& {! v2 y& n+ [
import calendar 3 M& ^$ ~. D+ Ifrom datetime import datetime * Q% h @, f% `8 s! T# E2 ~3 j 1 H, z. Q" J k" e0 ~5 A( G6 cc = calendar.Calendar(firstweekday=calendar.SUNDAY) " `, F$ ?& w6 _) Wmonthcal = c.monthdatescalendar(datetime.today().year, datetime.today().month) 0 j @! A+ Q/ ]- O#Python小白学习交流群:153708845 & ^9 k/ m& V! l
try:# J6 W& T1 @- Y8 [; \$ A
tues = [day for week in monthcal for day in week if2 }- k) E5 a' i" L+ J, k
day.weekday() == calendar.TUESDAY and day.month == datetime.today().month][0] # f' |, F) j$ k& W! ~! z print(tues) E; }6 j' Y) D4 A% f3 }except IndexError: u3 ?4 @) k$ `0 G1 w, o: B
print('No date found')$ p7 E4 l; {: ~+ h2 c7 x
. U6 G6 v# M8 i" ?6 G
十五、将整数转换为日期对象5 K7 `0 M7 S8 E5 z& E7 m, h
from datetime import datetime % O8 c( o1 V$ x2 A o' K; o( v : f; z3 p# I6 ~- \3 ?) P8 Xi = 15457300730 ^$ f1 s( c3 g8 t/ Y
timestamp = datetime.fromtimestamp(i)# j, [9 B# y: K" ^7 b% n0 C5 J
9 w6 \) f% T Z8 D
print(timestamp) # 2018-12-25 14:57:53 . q2 L' E. n7 _: H0 k9 Wprint(type(timestamp))- b! q+ I* M0 i9 X+ B; g$ U1 S
, u1 I; M7 W, w% t4 {十六、当前日期减去 N 天的天数0 s7 H4 V$ t# ]) D( F
from datetime import datetime, timedelta; S- U$ @! y+ R/ |% x9 n4 e; O
/ y+ U4 Z$ Y, d) [. j- W9 r
d = datetime.today() - timedelta(days=5)" j( n, W9 C. U1 W |
print(d) 4 A. h1 w( ]; S! S% R) R: l2 E7 U+ k0 q8 D1 |
十七、比较两个日期 4 D5 W, L R5 N4 Eimport datetime( e' M9 S+ ~9 w6 V0 [2 s) R' G
K0 N$ h4 ?4 F/ B9 z- i* j+ u
a = datetime.datetime(2020, 12, 31, 23, 59, 59); s. I4 w" ^/ f- n% A \* o6 W; x, \% e
b = datetime.datetime(2020, 11, 30, 23, 59, 59)8 g" |- D: S0 C; t
6 h. x) _8 w: O9 V0 ~6 l0 c5 mprint(a < b): n+ _# _9 R1 S6 H
print(a > b) 0 @2 @1 a1 z5 x; m, _8 r1 q7 G4 j1 Z7 ?2 L' v$ x. l
十八、从 datetime 对象中提取年份: m, Q) V7 e" P* F5 \3 A2 g6 V9 \
import datetime . }8 G' N; v+ `4 ]- ^/ @" a, M9 j3 R8 c, h) ^1 A4 z( {! O
year = datetime.date.today().year ( j% _" w9 o2 v, E- \, j- kprint(year) / ?# S9 x$ z+ N8 q* ~7 R Z9 k( u. Z$ r
十九、根据日期找到星期几 ) t% f ]: n# h& i( n; Cimport pendulum. u( O" L# Y0 b
9 Z3 X, \+ [/ b; b7 I0 m3 {
dt = pendulum.parse('2021-05-18') $ Z4 s1 {$ `& _% A$ wprint(dt.day_of_week) # 2 5 u( t2 W; T) s5 F/ E2 J 5 m2 J( v. V$ k udt = pendulum.parse('2021-05-01')' P0 Q4 s- S# _3 l5 i" E
print(dt.day_of_week) # 63 U6 k, ]' W/ U8 E& b4 H3 W2 S
( f5 Z! X' M; J, j
dt = pendulum.parse('2021-05-21') + h, i( z2 X6 a- R+ ]/ v3 \print(dt.day_of_week) # 5 & T/ X) L) O3 O, Z' v+ k9 g! J" k. j- B
二十、从当前日期获取 7 天前的日期 & J8 H$ P' v) @8 _; ufrom datetime import datetime, timedelta ( S$ o2 F. a. Y . B% a" ]3 a% R6 L5 unow = datetime.now() 4 I5 a R, \7 L9 [; J# I* {2 b T5 g" \$ u
for x in range(7): & r1 \9 S, _1 Z- O' r d = now - timedelta(days=x)- A% g0 X# ^0 l# I% m% e9 h+ }: T1 K
print(d.strftime("%Y-%m-%d")). Y2 l. X; c1 Y/ q( l
+ l" g: W! z2 A( f$ E
二十一、将两个日期时间对象之间的差值转换为秒 ( Z2 }- V: N0 nimport datetime ( Q3 U7 |* u x% x, H% ?- |. z$ k5 J' e, R8 S3 ?; `& M2 v
time1 = datetime.datetime.strptime('19 01 2021', '%d %m %Y')% D9 N1 ~6 @; y6 h% L& l+ T
time2 = datetime.datetime.strptime('25 01 2021', '%d %m %Y')" J' I' v2 V3 e% s) k4 V0 L6 z
5 C. k' s4 j+ S& N7 ~difference = time2 - time14 ?" p$ d$ d" C9 a% |' X
print(difference) # 6 days, 0:00:00 + u7 F; t9 z! w, Y! K' f% z; H* q( V* F2 E3 a6 E
seconds = difference.total_seconds()5 ]3 d5 E+ i6 b: v$ J
print(seconds) # 518400.0 5 q8 b+ |# S) v6 [$ u9 z/ D" `: H8 h4 H$ y# E
二十二、获得任何一个月的第N个星期五 6 [1 D8 N. { h; c: d5 fimport calendar7 Z, e( K2 p1 Y/ R' W. n
& P: y+ D6 q5 A8 \, [" g# 取2021年5月的第三个星期五 # [7 x' k; {6 x/ r( j( Ic = calendar.Calendar(firstweekday=calendar.SUNDAY)' X) b2 Q2 v$ Y( T
year = 2021 ( D+ [; y8 J; Y' C: a- s1 j$ {month = 5 ' M4 x; ]! d; i# z( q, _- i1 h* Zn = 2 # 取第三个 4 q- `1 s c' l' L5 W fmonthcal = c.monthdatescalendar(year, month)1 p/ `3 v7 C) f2 i/ p; K8 T: b
, v& O0 k: _) _! V3 U3 stry:: y8 I3 q$ E/ f" i; M# H+ m
third_friday = [0 o1 v) \( V9 \
day for week in monthcal $ N& C! w. R# M! L
for day in week if9 l( o* O0 W, V! ~' p* P F( l
day.weekday() == calendar.FRIDAY and day.month == month % j( t) ]: y# G+ d" J1 \, J ][n] ) b4 X8 F) @2 P/ | print(third_friday) # 2021-05-21+ ]; ~/ K8 |/ W5 A! p
except IndexError:* y5 j2 ]2 a7 W! J
print('No date found') : y7 Z' N4 n' Z2 w& {7 R3 E* \& q 0 F Q2 m" B t- f/ Z二十三、根据周数获取日期 ; U% e( o- N6 C0 O2 B" C+ b( O+ limport datetime ' ?* \; L- [( z! gfrom dateutil.relativedelta import relativedelta 5 g2 V- w6 i/ G 2 m3 `" y& v: s; W+ }2 nweek = 25 ) _- s, m. g8 V$ D1 Ayear = 2021 $ ]; y+ I0 [5 W! m" D# Ldate = datetime.date(year, 1, 1) + relativedelta(weeks=+week)' x0 |+ o9 O" \
print(date) # 2021-06-25 ! y D2 T' m- A7 T( }8 ^/ y# m& u( t' s
二十四、获取特定日期的工作日 $ z0 q* |+ R& X0 Zimport datetime 5 m) q6 q$ W) |' D( n1 k# e. ~ ; q% r2 f% T. ?. Kprint(datetime.date(2020, 5, 15).isocalendar()[2]) # 53 I) o, C5 h: o V- Z; ]; h$ L