数学建模社区-数学中国
标题:
Python处理日期方法大全、三十种方法
[打印本页]
作者:
2744557306
时间:
2024-3-22 11:30
标题:
Python处理日期方法大全、三十种方法
使用 time 模块展示当前日期和时间
% z. e! o& }, m, h6 v
import time
. M3 c# j7 v& R2 ?; U* \
from time import gmtime, strftime
# A* O$ c$ N4 N" s
- B% C* F( B" a' L W, W( }+ `
t = time.localtime()
+ W* `: @+ M( I' e, J
print (time.asctime(t)) # Sun May 7 09:30:37 2017
3 W9 J1 l! N& O! S
print(strftime("%a, %d %b %Y %H:%M:%S +0000", gmtime())) # Sun, 07 May 2017 04:00:37 +0000
# J: [2 y* Z5 @' l! \5 c+ {) O
print(strftime("%A", gmtime())) # Sunday
3 ^ f* s7 E0 W- ]8 a
print(strftime("%D", gmtime())) # 05/07/17
. G( T" B" V# {
print(strftime("%B", gmtime())) # May
% G% N& v- r8 y' z) n( X
print(strftime("%y", gmtime())) # 17
- w. B3 V2 g+ P; ^+ q
% @; r# C2 h5 m* `6 L, f
# Convert seconds into GMT date
3 `$ }5 j2 u; W$ _4 n; f
print(strftime("%a, %d %b %Y %H:%M:%S +0000", gmtime(1234567890))) # Fri, 13 Feb 2009 23:31:30 +0000
; \+ r8 ]/ L2 [) M! X' G
6 W- `% k; i7 Q5 S {9 W
二、将天、小时、分钟转换为秒
) E a& k, u0 Y% [* d! V
SECONDS_PER_MINUTE = 60
, J# Y5 H/ `+ Z$ T* E! g
SECONDS_PER_HOUR = 3600
2 s7 W5 \* `: c& i
SECONDS_PER_DAY = 86400
" \, ^; p5 _4 Q# t5 x. K
! T9 S0 x* g! i. B5 y
# 输入天、小时、分钟、秒的数量
$ F* E3 N A# O% v; o
days = int(input("Enter number of Days: "))
) N, c0 x7 Q" w5 a9 T
hours = int(input("Enter number of Hours: "))
2 B4 ?6 b9 e' k4 z
minutes = int(input("Enter number of Minutes: "))
) V( ?( T$ G' _, Y4 L
seconds = int(input("Enter number of Seconds: "))
" _, \/ A8 ?) R; @0 d
0 _5 R+ ~. o6 U$ {# S
# 计算
5 e, D; n2 |9 y( ]6 @
total_seconds = days * SECONDS_PER_DAY
* C# G+ I$ M4 c* ~- v" R
total_seconds = total_seconds + ( hours * SECONDS_PER_HOUR)
; ?0 ?2 ~# ^2 s' g+ N
total_seconds = total_seconds + ( minutes * SECONDS_PER_MINUTE)
3 H8 h" ]. o3 f
total_seconds = total_seconds + seconds
* \! V& H/ L$ l' m
" _4 B2 D6 j2 Z0 b' `
# 结果
: c3 Z# L; f0 u
print("Total number of seconds: ","%d"%(total_seconds))
) o$ m: }2 I/ w% ]# z7 b/ W. q
'''
, _% c; y5 R% ]) B8 j8 `
Enter number of Days: 5
K% K" ~- ]8 c. r% G
Enter number of Hours: 36
: W' o6 j7 y" p) O9 d
Enter number of Minutes: 24
7 ^& q* q6 d" R& P. i
Enter number of Seconds: 15
. K- F" S8 F$ @; F/ w- C
Total number of seconds: 563055
2 ]1 S# L8 k/ {& `5 I) J: E: `
'''
4 `; [/ U$ v/ j
0 M6 K: K# X1 a+ k& G
三、使用 Pandas 获取当前日期和时间
- T% p( P4 G) S+ k% }
import pandas as pd
3 V5 G9 }, m8 B, b. X, M
print(pd.datetime.now()) # 2018-01-19 16:08:28.393553
8 z) J% d; q& o& h
print(pd.datetime.now().date()) # 2018-01-19
9 }1 e* z+ K- F9 P, t
print(pd.datetime.now().year) # 2018
$ m% i! {- [# j# k: D& B
print(pd.datetime.now().month) # 1
- a$ A9 p Z5 Z4 @/ S2 Z
print(pd.datetime.now().day) # 19
- H! }8 L) Q& L/ W2 @8 r( t1 I
print(pd.datetime.now().hour) # 16
& Z9 j+ \9 y7 `9 a
print(pd.datetime.now().minute) # 8
1 T* X6 t' `8 q! I4 o
print(pd.datetime.now().second) # 28
/ m- j/ G6 |" c7 o2 v9 P
print(pd.datetime.now().microsecond) # 394553
) q0 {% s1 D4 @( y5 z* ~
/ b1 V& p# X0 u+ L Q
四、将字符串转换为日期时间对象
3 T' |6 o* i( P0 U% i
from datetime import datetime
% n0 [ b) n( P0 m1 j% N
from dateutil import parser
6 u: M" l4 k8 J c4 N* u
- K2 }- w; V$ c q" L+ w
d1 = "Jan 7 2015 1:15PM"
7 a& i4 e4 K2 e' Q5 l0 z3 U
d2 = "2015 Jan 7 1:33PM"
4 j) }; n6 Q1 {# k: N3 d1 ~. r
) v0 b5 T6 [8 U$ C, }7 |
# If you know date format
2 L0 g' [' z) I! ]7 _# i) E9 ^ K
date1 = datetime.strptime(d1, '%b %d %Y %I:%M%p')
3 l& l) Z* T1 |3 M. ?" T8 ], P
print(type(date1)) # class 'datetime.datetime'
' n& i3 q4 y$ t5 n! r, o
print(date1) # 2015-01-07 13:15:00
k2 d. m9 ~, S; B) W( r9 R3 e
+ Z" @$ J: ]# Q9 w
# If you don't know date format
$ n; l' Y$ `9 E3 D9 F2 W
date2 = parser.parse(d2)
: I" M" L9 ^2 d3 ?! ^
print(type(date2)) # class 'datetime.datetime'
0 o r& ~: j* \
print(date2) # 2015-01-07 13:33:00
1 _, S5 |6 O4 Y" s% ]
" T: b2 N) S' A( x
五、以毫秒为单位获取当前时间
1 E3 R# h9 r# R: i6 [
import time
0 U" u( q: n8 B& _$ S3 T
. V6 P# b- D9 D( W7 B) n
milliseconds = int(round(time.time() * 1000))
* ?3 \: T; q x8 e8 S9 I
print(milliseconds) # 1516364270650
5 F+ z5 i" F& i K% B2 `
8 J. z6 f$ o* Z: t
六、以 MST、EST、UTC、GMT 和 HST 获取当前日期时间
4 [/ I' D. }; d. @7 ^. H+ t
from datetime import datetime
- j6 k) K# M7 B) T) [, }
from pytz import timezone
* {" Q/ D3 F* v" I9 z9 g
& K' m/ Z, Q' X
mst = timezone('MST')
- Y6 Q2 I$ s, F7 I& ^5 \: F& J- t
print("Time in MST:", datetime.now(mst)) # Time in MST: 2017-01-19 06:06:14.495605-07:00
8 ]$ p6 O3 i* O. W/ L9 K( \
est = timezone('EST')
! L* n: P) C* [3 w( u; I
print("Time in EST:", datetime.now(est)) # Time in EST: 2017-01-19 08:06:14.496606-05:00
+ q4 k L3 d9 j6 T( Y9 [
utc = timezone('UTC')
5 ^ b* n: O! b: d$ @
print("Time in UTC:", datetime.now(utc)) # Time in UTC: 2017-01-19 13:06:14.496606+00:00
! b6 n' z5 A: I2 L! V
gmt = timezone('GMT')
% \# ^ O0 i& Y3 s* s+ Y# C( O8 a4 G
print("Time in GMT:", datetime.now(gmt)) # Time in GMT: 2017-01-19 13:06:14.496606+00:00
* x0 B" X( X, t4 E
hst = timezone('HST')
: u4 }( P* H1 L& p
print("Time in HST:", datetime.now(hst)) # Time in HST: 2017-01-19 03:06:14.497606-10:00
7 R: P7 j5 Z" c
- c t3 B. V( y+ D
七、从给定的日期当中获取星期几
# ^3 I4 G2 B) S' x; N' N; T$ k, ]$ Z! N
import datetime
) Y0 ?* f4 p# y* p
6 ]& ]9 F. k8 o4 l# [, S! m
dayofweek = datetime.date(2010, 6, 16).strftime("%A")
9 Q/ e/ ?- q, ~7 E" M2 \' P
print(dayofweek) # Wednesday
7 h: t$ }; b) [: Y: z w' i( x
7 \$ B2 R f; h
# weekday()方法: 0代表周一,6代表周日
' v( m3 z2 r( s8 N( | A
print("weekday():", datetime.date(2010, 6, 16).weekday()) # weekday(): 2
' K5 Z: E$ N$ M4 | e; Y- E) M7 C
7 ~) q' p& [ L
# isoweekday() 方法: 1代表周一,7代表周日
. L" h2 Z% k5 k2 Q+ f# Y
print("isoweekday()", datetime.date(2010, 6, 16).isoweekday()) # isoweekday() 3
6 Q8 ~/ C$ ?% r9 R+ S8 b
( r4 o* l- \* E4 B1 M
dayofweek = datetime.datetime.today().strftime("%A")
" F3 W0 C% r8 i# k) Y8 \
print(dayofweek) # Friday
2 Z2 N @" b* m' [/ B
print("weekday():", datetime.datetime.today().weekday()) # weekday(): 4
T" |4 Z$ G( Y9 r6 {- B4 I
print("isoweekday()", datetime.datetime.today().isoweekday()) # isoweekday(): 5
9 U& I8 T4 D; f3 z. x# U3 Q
2 I2 `4 U6 t& T% Y$ P- {! A
八、计算两个日期时间对象之间的时差
5 n2 W; S( `% N: s( }- F* c
import datetime
+ m5 b2 V" T* e& V, \5 B8 k% [
from datetime import timedelta
* B! c5 G+ u, S3 ^
- o$ ^8 D( P2 q* u& x6 t$ q
datetimeFormat = '%Y-%m-%d %H:%M:%S.%f'
i& r. M' G1 h o E% P& j( R
date1 = '2016-04-16 10:01:28.585'
& m1 [6 r, [7 i( `/ l
date2 = '2016-03-10 09:56:28.067'
8 ^/ F, |8 N$ ~2 a; \5 O7 Y. L
diff = datetime.datetime.strptime(date1, datetimeFormat)\
5 \5 E. k* S" N! R8 B0 G
- datetime.datetime.strptime(date2, datetimeFormat)
- T, }7 H4 l$ `+ i
: G) `! b0 D9 x8 w( I3 u3 R4 l- t5 j
print("Difference:", diff) # Difference: 37 days, 0:05:00.518000
# M& {$ f: } a( W/ m' K
print("Days:", diff.days) # Days: 37
7 ]/ _& U- H* p( C. {6 v& r
print("Microseconds:", diff.microseconds) # Microseconds: 518000
9 `( `, V, K6 p: C; ?
print("Seconds:", diff.seconds) # Seconds: 300
0 `; d! D- ^- H
8 j3 z* T& B! r0 t1 j/ n4 R0 ]" F
九、将 5 分钟添加到 Unix 时间戳
6 Y, k: h* \, H! Y( R% u
import datetime
3 {# ?/ V& R+ o) Y9 D7 i
import calendar
& N8 G6 e; g. ~4 r2 Y
2 H% c, n* a: P, O
future = datetime.datetime.utcnow() + datetime.timedelta(minutes=5)
9 N$ j% k8 u; B
print(calendar.timegm(future.timetuple())) # 1621069619
) q5 S2 B3 a+ e, d# J7 ]) [9 ]
5 }: U. s# t! y8 A+ v! q
十、遍历一系列日期
+ e( S" Q: i: q# a# N
import datetime
$ v. U2 `# O+ a
* ?5 P" h6 ~' i, B; r- v. g0 I
start = datetime.datetime.strptime("21-06-2020", "%d-%m-%Y")
' U! U6 u) R9 L1 f+ W
end = datetime.datetime.strptime("05-07-2020", "%d-%m-%Y")
2 ?2 F4 [) J$ r; h, e3 v- u2 u& D
date_generated = [start + datetime.timedelta(days=x) for x in range(0, (end - start).days)]
9 S9 E8 Y! r, s2 h0 C
" Z" T8 K) |8 Z
for date in date_generated:
8 `0 y, b* l( P) u3 E: d* n$ g
print(date.strftime("%d-%m-%Y"))
4 B l( a! x( M
( h7 w a$ L. u& C) r! p
十一、巴黎时间更改为纽约时间
% J6 l: Z. |6 {2 u
import pendulum
& G+ ~) n; L/ _3 i
; q/ f* h* {. E5 k$ A+ F) c
in_paris = pendulum.datetime(2016, 8, 7, 22, 24, 30, tz='Europe/Paris')
. l5 E0 q* K( `# t- r
print(in_paris) # 2016-08-07T22:24:30+02:00
0 L+ e6 Z+ I2 J7 L
8 `3 ^! t" s0 ^- l4 S" U& n
in_us = in_paris.in_timezone('America/New_York')
! G% Q! A) ?* p8 H& u( x
print(in_us) # 2016-08-07T16:24:30-04:00
0 q; [. g u, L/ |2 X
3 k+ o3 t' S, J# x7 W% @
十二、使用 Python 获得最后7个工作日
- T) L0 r# P. H. s3 B
from datetime import date
/ t& C/ f1 y+ [" ~9 i4 K
from datetime import timedelta
- C/ Y' A* v9 Y# o
( ?. `: G# E. ?* y( j5 U
today = date.today()
0 e2 K; ]6 I' T' i
7 h5 r6 X* Z+ l5 N0 d+ d' C
for i in range(7):
( L! b+ i$ J; T
d = today - timedelta(days=i)
7 m: n, \- L% d
if d.weekday() < 5:
& s/ ~% g4 O% c: h3 ?
print(d)
+ J/ m! p1 @7 B6 o
; v. X4 t9 N1 `6 G4 p" F0 E
十三、从今天的日期和一个人的生日推算年龄
. w0 `3 b. b8 g" c# q1 t$ @
from datetime import date
* u0 {) a$ h) [6 n
/ U7 r# \: ~( ]- v+ Q+ T
4 v8 i: c+ f% k1 @
def calculate_age(born):
1 x( N- E8 _* q0 a$ C
today = date.today()
7 r- z6 P9 _6 @/ p
try:
3 X V$ J( k9 d4 ^" D
birthday = born.replace(year=today.year)
' x# Z5 `+ [/ ~% D6 L
except ValueError:
6 f3 ^4 I4 x! B0 a' X( _( H5 k6 m1 L
birthday = born.replace(year=today.year, month=born.month + 1, day=1)
X7 c3 I$ X- O% N9 ]/ T- B# I- g! g9 N
if birthday > today:
7 @2 F6 P5 s7 J$ G; {; f% h* o9 [
return today.year - born.year - 1
' u- g' Y; @' ?6 X
else:
) Q3 S: j! d4 ]9 o w* `- V$ d
return today.year - born.year
4 x) ~$ g- w/ r* B
+ B0 V8 o) g% _0 Z2 o, E
& b$ K! D+ z. z, U$ y
print(calculate_age(date(2001, 3, 1)))
/ T, Z1 l. C8 w6 x9 \9 U
7 p3 [/ J4 z' I
十四、获得本月的第一个星期二
9 [6 |) r2 ?4 K5 w3 s
import calendar
( }6 M; N) z$ J, q" r7 B& I; V2 X
from datetime import datetime
1 q) Q, p& N* {, E( A* s& f
+ R' e- ]$ N9 B5 Q8 Z
c = calendar.Calendar(firstweekday=calendar.SUNDAY)
) p% L/ K+ L9 _& I S( C0 }
monthcal = c.monthdatescalendar(datetime.today().year, datetime.today().month)
3 }0 F- O! {9 u4 ]+ i# e
#Python小白学习交流群:153708845
' M- }+ a! [7 i. ^7 z& ?- j' _
try:
8 k$ S, W: K. K5 m) ?! ~% Z
tues = [day for week in monthcal for day in week if
9 S7 D! ^6 i- [3 \" {/ H# ~
day.weekday() == calendar.TUESDAY and day.month == datetime.today().month][0]
6 E- g9 k2 ]( a- x
print(tues)
, q- ^+ n7 ]. a% ]& J
except IndexError:
8 Q) _* x) e8 c) ] M# F8 k. Y8 A
print('No date found')
) K4 M( Z1 F7 P, d7 {
. d4 r4 J4 C! v5 h O9 O- x
十五、将整数转换为日期对象
. Q7 m2 `, L* Y- C) V2 W0 Z
from datetime import datetime
9 y& h$ d1 T/ }* \# C
B7 m) ~/ H4 h% _( O2 m
i = 1545730073
& X2 E* Z! }% F# C$ {
timestamp = datetime.fromtimestamp(i)
& J R; ?8 Q5 A, L' {
$ F1 k% J: m, c" D+ T
print(timestamp) # 2018-12-25 14:57:53
5 H X& b0 q; {9 B" M& B) a" A; a
print(type(timestamp))
5 q, t) Y$ L9 \% F. m
?3 h! O* |8 `
十六、当前日期减去 N 天的天数
* ~4 M, s0 E+ J* _. ~- @* p* u
from datetime import datetime, timedelta
$ l3 h$ Y. p7 |( G
6 z' L1 B; l9 K6 u9 |# W3 }
d = datetime.today() - timedelta(days=5)
$ J+ J& q! v2 Q
print(d)
# Y) z% R) G6 h% r# l) m( s
# X5 S0 }9 R( P, B1 M( ^
十七、比较两个日期
9 m+ T- c1 g5 c( F2 C
import datetime
1 A1 E" j" W1 e' ?7 s: i' v% Q' o
3 h( Y1 j: d% O( U
a = datetime.datetime(2020, 12, 31, 23, 59, 59)
- c; j4 ~ W: O7 F& z: `
b = datetime.datetime(2020, 11, 30, 23, 59, 59)
6 R5 z4 N7 d u' H- y* w h! D
5 `- o1 S7 ?" M) u. L4 O O8 a
print(a < b)
0 `/ S5 r* H) S g
print(a > b)
3 ^- p8 i5 U" i: N+ h3 K2 x
* A% {% ^! F7 E0 @2 \4 ?
十八、从 datetime 对象中提取年份
3 \+ f( u2 X# E% H& x: M
import datetime
( y: z" ~) b7 ?; @4 c
* B q% g: H" N+ ?5 [, Y* `6 G
year = datetime.date.today().year
& l; H& Z. v3 \2 ~
print(year)
! j8 V, c& O3 D( J& L+ \# t
0 m( L1 D/ |* {0 M3 T- u5 G
十九、根据日期找到星期几
. T. V' \3 f1 n- E% s$ |
import pendulum
% {9 `6 s/ W& ^! |( |. E4 ^
. m7 b7 y, C! K B3 v
dt = pendulum.parse('2021-05-18')
6 u8 p8 T2 ], S0 w, } O6 g3 d$ b i, t
print(dt.day_of_week) # 2
0 Z3 p6 G; L- u2 I3 N2 V4 J
( c& M( J+ _4 E
dt = pendulum.parse('2021-05-01')
+ V1 i0 Z* i& _6 H. D w0 F( e" }7 F
print(dt.day_of_week) # 6
" q! T% z( s; r( ^* u
8 f# I |3 ?4 I% z
dt = pendulum.parse('2021-05-21')
! |- n$ ^6 `& q$ n
print(dt.day_of_week) # 5
, R4 w2 A! y! }) Y
$ r- r {) S; k
二十、从当前日期获取 7 天前的日期
5 `4 |7 x+ {0 Z& R4 o. x1 T; D
from datetime import datetime, timedelta
8 H$ M- `( ]5 ?2 p# H) q
* r& Y3 c6 C0 \5 J* i1 b
now = datetime.now()
% c! M$ ?/ u' Z+ ^/ T
3 q! M# i2 ]0 d7 s# Q0 ~! C
for x in range(7):
) }( |/ l$ ]) E# B
d = now - timedelta(days=x)
3 }" u/ g3 P5 [9 |9 k4 p3 G
print(d.strftime("%Y-%m-%d"))
4 B) W/ a: a t% O/ U2 o; Q; ^
* D/ G0 ^) C9 A7 Z/ ^! w
二十一、将两个日期时间对象之间的差值转换为秒
8 A: Y3 O% v$ d. @* V; {5 t/ Y% n
import datetime
" v+ w( }$ ^+ `( d X
- K: O5 ^7 c5 O( L# v
time1 = datetime.datetime.strptime('19 01 2021', '%d %m %Y')
9 p8 d7 M5 J: o0 R
time2 = datetime.datetime.strptime('25 01 2021', '%d %m %Y')
7 Y, _2 T M3 F. |" e S% n4 J
$ D! l- y3 Y" ~
difference = time2 - time1
) U% Q3 {# @1 S! d
print(difference) # 6 days, 0:00:00
$ b0 }& i0 f1 O
2 a% t1 g @1 T! V0 `( |
seconds = difference.total_seconds()
# I; v6 M0 D& j4 c$ i
print(seconds) # 518400.0
* l: W5 W# F1 H) r5 a% n
* I6 w8 |/ b0 T1 n+ R
二十二、获得任何一个月的第N个星期五
6 K/ e( W0 O$ L
import calendar
1 u! P" s2 _) V+ F5 G
' D* w' e6 W% d i* m0 ^$ b
# 取2021年5月的第三个星期五
: f! z. U8 |" O) G% C
c = calendar.Calendar(firstweekday=calendar.SUNDAY)
! R0 x3 [+ S8 L; q: X
year = 2021
( p8 J5 q; A9 f1 Z2 \; l
month = 5
& a3 @0 j6 H9 o _/ ^+ B U
n = 2 # 取第三个
V/ t& O, b+ _8 G; G3 U2 p
monthcal = c.monthdatescalendar(year, month)
5 d! n6 F5 n' f m( ^, H( J
0 _1 U- K+ h- b1 K
try:
/ c+ f! c6 {6 c9 p& X# F* \; E
third_friday = [
/ ]" ^4 p: ?3 k* X, v5 o6 p
day for week in monthcal
/ f$ V6 [/ a- \* Z; U8 C
for day in week if
( _( N3 @5 i, p# s( s
day.weekday() == calendar.FRIDAY and day.month == month
6 F6 @) e1 k2 ~9 D
][n]
( y( s4 ]% S. h4 {! g
print(third_friday) # 2021-05-21
( U: B3 @) f" ?( t1 |
except IndexError:
3 h: z4 G- ~/ b
print('No date found')
1 X* X( ?* F8 ?$ ~8 l
) l+ |9 G9 a ?& N9 ~9 e) \
二十三、根据周数获取日期
* M& B7 `' O5 D( N
import datetime
0 O- }' b, L1 P! E7 P+ Q: w4 ?* \
from dateutil.relativedelta import relativedelta
1 b5 g2 x. F/ k. {/ L- I
% p5 X8 n) N1 F8 L) x' H
week = 25
! Q0 ` P3 b$ N( p) I, J. W
year = 2021
5 c. f6 Y2 E* |! w( k! n
date = datetime.date(year, 1, 1) + relativedelta(weeks=+week)
) t& x9 h# f) ?7 R3 \8 d
print(date) # 2021-06-25
4 i- u, y8 J1 N' O
" Q0 U- c( ]% I5 v9 K
二十四、获取特定日期的工作日
& @! g2 r t1 u' v8 l
import datetime
1 U( a. v) \( u
3 m' V% c- [+ l+ k6 n& o7 M
print(datetime.date(2020, 5, 15).isocalendar()[2]) # 5
* W5 `1 Q @% D* J" i1 ]
9 m8 b) b2 Z2 ^' L
二十五、创建一个 15 分钟前的 DateTime
4 W; v! f. C0 H- y, Q
import datetime
1 T# s9 ? W4 r6 n- j
#Python小白学习交流群:153708845
9 l+ B" n; j' D$ f* H( z( s6 ]
dt = datetime.datetime.now() - datetime.timedelta(minutes=15)
3 |& O4 N2 x- F: B, o! w; q
print(dt) # 2021-05-15 22:25:55.897365
; y9 \7 [3 d9 C5 o$ q
N! Q Z3 t" p- z
二十六、从特定日期获取周的开始和结束日期
5 `* ~7 O: _6 ^( |* j( P
import pendulum
5 o/ c1 ~9 M& g2 V6 R
/ r0 j$ Z- c3 Q2 x3 B
dt = pendulum.datetime(2012, 9, 5)
% D% j# ~+ [6 {# i1 [3 a% M' e* T
2 F6 ]! O8 M4 R$ \4 o8 y6 ^
start = dt.start_of('week')
* P0 F0 ~% ^% ?3 A5 F- A j& ?: O6 ^
print(start.to_datetime_string()) # 2012-09-03 00:00:00
3 O4 o, E! {" t# C( S7 r/ d
1 |$ L! T @% E
end = dt.end_of('week')
3 O' O2 ?: ~4 G, r4 K+ M; T
print(end.to_datetime_string()) # 2012-09-09 23:59:59
_) w# Z$ @& R, _, D: A
$ D( `4 T* Q% C: s) U9 q
二十七、两个日期之间的差异(以秒为单位)
! O; W8 ]' K! Q
from datetime import datetime
, ?$ b. y/ g" f
#Python小白学习交流群:153708845
7 l% H/ W4 ]5 K# z2 B4 M( o2 K7 y* T
fmt = '%Y-%m-%d %H:%M:%S'
% z$ P5 ~5 C6 t; K' z; ~2 v" y, L
d1 = datetime.strptime('2020-01-01 17:31:22', fmt)
$ M- G( F u5 k4 }4 e
d2 = datetime.strptime('2020-01-03 17:31:22', fmt)
# s8 l7 Z' {5 A
: ?; ?6 C4 h; x
days_diff = d2 - d1
+ o# \& s, j6 W
print(days_diff.days * 24 * 60 * 60) # 172800
+ H2 L9 @" ?; {2 s g! ?
6 W& T& k; v; R! Q/ S2 ?; W5 `# y
二十八、以这种格式获取昨天的日期MMDDYY
0 p# |5 m: p! v$ t
from datetime import date, timedelta
+ |, d5 k: X- }0 K
, Y3 g, P3 v$ h- D; K5 W
yesterday = date.today() - timedelta(days=1)
/ X) B) ?/ |/ T. Q
print(yesterday.strftime('%m%d%y')) # 051421
; p9 \ s& I* U7 K7 h2 K. V
# h0 T! o8 A: s
二十九、根据今天的日期获取上周三的日期
$ r0 r: {* e. V* b2 l# l
from datetime import date
' @5 {8 {8 J/ E- Z
from datetime import timedelta
2 }: m' @) f" C0 i
% \! {! ~( g1 L0 w5 f: d
today = date.today()
# F: L3 p0 h6 w+ l
2 j7 Y4 D- \: W( {
offset = (today.weekday() - 2) % 7
) [/ |& i) S( O4 w
wednesday = today - timedelta(days=offset)
; ]% d( ^ _# s! B/ Q
print(wednesday) # 2021-05-12
2 ~( ?# n* |# n
* Z- y1 B3 s" C, B+ e% c/ Q
三十、所有可用时区的列表打印
! L/ t& a2 a; V+ b
import pytz
/ I/ ` p9 P: W" O, d' C1 u
" ~, _6 q6 ?' J* y7 H) `
for i in pytz.all_timezones:
! h" }% a- D/ l
print(i)
7 G d1 B: r$ k6 X
: {! _. o$ L2 @% k
* Q |; `0 g8 u) j7 i8 [
- \/ a! Z9 f, U# l6 q2 q
欢迎光临 数学建模社区-数学中国 (http://www.madio.net/)
Powered by Discuz! X2.5