数学建模社区-数学中国
标题:
Python处理日期方法大全、三十种方法
[打印本页]
作者:
2744557306
时间:
2024-3-22 11:30
标题:
Python处理日期方法大全、三十种方法
使用 time 模块展示当前日期和时间
* L: h2 p i; [" a! |* @7 {
import time
" Z, _" Z' U/ ^
from time import gmtime, strftime
# f! M; S6 z4 D2 g( F
2 u/ J6 h# {. @
t = time.localtime()
1 d' }" v& E8 z/ ^
print (time.asctime(t)) # Sun May 7 09:30:37 2017
/ Y* `6 V$ n6 U m1 B+ Z
print(strftime("%a, %d %b %Y %H:%M:%S +0000", gmtime())) # Sun, 07 May 2017 04:00:37 +0000
+ m4 i) a, |. Y) G, u+ W
print(strftime("%A", gmtime())) # Sunday
; E( d; h( {) q: X7 V: b$ W
print(strftime("%D", gmtime())) # 05/07/17
) X4 S2 ]/ w Z9 [- f& I
print(strftime("%B", gmtime())) # May
# B. _2 E1 I- R, G/ ~1 l
print(strftime("%y", gmtime())) # 17
8 L# e! g0 G0 O1 { I
2 j" x# ?* C/ ^" e
# Convert seconds into GMT date
$ p2 ]/ U8 I: _9 i% P3 r
print(strftime("%a, %d %b %Y %H:%M:%S +0000", gmtime(1234567890))) # Fri, 13 Feb 2009 23:31:30 +0000
9 P7 t' @6 h" k3 N* |
) i0 p0 y w& E- ^7 D
二、将天、小时、分钟转换为秒
& ^8 s- N, p. p" `2 p$ L
SECONDS_PER_MINUTE = 60
: M, e! ^" D6 Q% R. p
SECONDS_PER_HOUR = 3600
) q4 V9 } I9 a
SECONDS_PER_DAY = 86400
% m% K5 x8 F& j1 B
% k2 C6 D9 D3 k9 G: i6 W8 k3 V
# 输入天、小时、分钟、秒的数量
F3 Y1 Z: K9 ^1 w1 [; g+ O; a3 y. @; E
days = int(input("Enter number of Days: "))
$ ?, `' k$ s* J) H5 Z3 K+ I
hours = int(input("Enter number of Hours: "))
- o! f+ W' p- a* w; b; l
minutes = int(input("Enter number of Minutes: "))
$ t7 g* u. _6 g, Y9 I
seconds = int(input("Enter number of Seconds: "))
5 j3 {! V5 O8 c7 c
E: M g# ~% {' j% j- c) _$ o
# 计算
& X# w8 X s0 V4 y1 c! {- H! v6 u
total_seconds = days * SECONDS_PER_DAY
/ ?( O" @) \! \. f5 I w4 W
total_seconds = total_seconds + ( hours * SECONDS_PER_HOUR)
. p2 q2 u- h/ t" r1 U
total_seconds = total_seconds + ( minutes * SECONDS_PER_MINUTE)
5 z% f& K/ _6 T! q5 B
total_seconds = total_seconds + seconds
1 h* C! v; q9 q x" [# |
+ |( ~8 o) O+ B( J
# 结果
7 w# v4 w7 r* I j. A) u$ t
print("Total number of seconds: ","%d"%(total_seconds))
' P7 x" y. @2 V, h) _5 X- g
'''
0 h2 X# ?8 X" _6 j- t8 t8 D
Enter number of Days: 5
, \' w8 y$ J- } M {
Enter number of Hours: 36
$ ~# f. l6 w8 O- s2 V4 Q
Enter number of Minutes: 24
- r# v+ t5 @; @ n7 w
Enter number of Seconds: 15
0 R# N4 e0 I8 S' E( U2 l, c0 \$ s
Total number of seconds: 563055
0 y, }/ Z, c# Z; Q& [
'''
( z; g! w. m6 q. ]% i& W4 _
# S1 B: W- b k: v E [
三、使用 Pandas 获取当前日期和时间
K& f ]# k8 R2 |3 |! J) C+ H
import pandas as pd
/ }8 |2 h! ]. t8 I
print(pd.datetime.now()) # 2018-01-19 16:08:28.393553
* q6 E5 k; s4 @9 O
print(pd.datetime.now().date()) # 2018-01-19
) X" u# M8 B. y+ ?/ {1 q; \
print(pd.datetime.now().year) # 2018
( j+ K7 c' W' d5 m% [' F5 x
print(pd.datetime.now().month) # 1
( `2 ^8 i! Y- X4 M( ~3 U J3 @
print(pd.datetime.now().day) # 19
- T! X! q& F: c. H- r7 n
print(pd.datetime.now().hour) # 16
$ s6 O0 j6 P4 A5 T% M7 s' m
print(pd.datetime.now().minute) # 8
! D" ~ M. z4 P7 u
print(pd.datetime.now().second) # 28
1 E9 x5 ~) W2 i' H c+ E+ o# N
print(pd.datetime.now().microsecond) # 394553
- b0 Y$ R/ J D7 C& t
+ R( b& A( Y9 J/ ?. Q5 J H9 C4 ~" J
四、将字符串转换为日期时间对象
6 s) D% F3 h- e4 A7 @- z
from datetime import datetime
6 C4 l% A- K0 V6 U! H+ j
from dateutil import parser
O: c# v) c, C( G! s7 V
# I$ S5 M" x+ B/ L, L$ G
d1 = "Jan 7 2015 1:15PM"
/ h5 f9 F5 I' h2 C7 I& y
d2 = "2015 Jan 7 1:33PM"
" J t# Z- I# K9 Y2 ]' _2 j" F1 D
3 U4 i1 K6 ~ A. q' s+ A
# If you know date format
x s4 k2 L: h! J$ p/ _
date1 = datetime.strptime(d1, '%b %d %Y %I:%M%p')
) `9 I; C) T/ v( ~8 r R
print(type(date1)) # class 'datetime.datetime'
8 O/ V/ ?& _( b* L
print(date1) # 2015-01-07 13:15:00
) ], d! A7 j( l( o( M" y; v8 M
) C! P9 f1 \/ T. J! }+ Q
# If you don't know date format
( Y$ M" d! }! Y# E+ [- p
date2 = parser.parse(d2)
& l& B- v( z& K+ n
print(type(date2)) # class 'datetime.datetime'
& I% n" c- U. K" K( j, l
print(date2) # 2015-01-07 13:33:00
" g+ C: a* y# v# h4 P, P, a* p
7 X2 v2 W# |7 B3 `
五、以毫秒为单位获取当前时间
' Y, A/ o& {7 t/ F" N# |7 Q
import time
2 {' K- N- |) C
* C5 m: A4 v# x6 ^+ H
milliseconds = int(round(time.time() * 1000))
2 [3 \) p3 U5 r+ Q) S6 D. I8 q, ~
print(milliseconds) # 1516364270650
) Z+ v) W! L. ]- d
. _9 x9 H% h; Q U7 G( b; Y$ ?
六、以 MST、EST、UTC、GMT 和 HST 获取当前日期时间
4 p1 Y" g. \* `& y- n( a" {
from datetime import datetime
5 ]+ z a4 l% F
from pytz import timezone
% l+ @ C- @! G$ p& Y) }+ j) x" z! ?$ ]( K
# J2 z2 h3 q# X ^! I5 Z% t- B0 O
mst = timezone('MST')
6 b7 T7 @' q8 L. U* P
print("Time in MST:", datetime.now(mst)) # Time in MST: 2017-01-19 06:06:14.495605-07:00
- i4 L5 s# O1 b7 _- ^ y( j: s
est = timezone('EST')
1 F5 C! s& `7 k% J. ^2 Z+ Z
print("Time in EST:", datetime.now(est)) # Time in EST: 2017-01-19 08:06:14.496606-05:00
& b- P- W$ Y. ?1 j( b
utc = timezone('UTC')
0 f; @/ y' B1 F4 r" [2 z( e L7 w
print("Time in UTC:", datetime.now(utc)) # Time in UTC: 2017-01-19 13:06:14.496606+00:00
$ @: L# y5 W. ~1 ^6 t& M
gmt = timezone('GMT')
- i3 {2 z, B! K5 D8 y, j3 R- @
print("Time in GMT:", datetime.now(gmt)) # Time in GMT: 2017-01-19 13:06:14.496606+00:00
: J5 h( R+ W$ \: N
hst = timezone('HST')
. V5 `( s8 r& P) q/ ~" z
print("Time in HST:", datetime.now(hst)) # Time in HST: 2017-01-19 03:06:14.497606-10:00
4 y, ~$ O) B1 o) a$ ?& G
8 Y+ N" X9 G" H) d" l) r8 A
七、从给定的日期当中获取星期几
" @. ?) C, Y! D$ B
import datetime
7 m1 U0 ]$ L. ?" q, g5 b7 w
7 A1 C, ~8 C$ x: h2 ~" |
dayofweek = datetime.date(2010, 6, 16).strftime("%A")
. W1 I& U9 Y4 @8 s4 m
print(dayofweek) # Wednesday
' b- ?& @8 K5 Z2 p# Z- Q0 q$ [0 e {
( c' r5 g/ @' H1 l0 ^0 G
# weekday()方法: 0代表周一,6代表周日
, N& Y2 K- u& F; U
print("weekday():", datetime.date(2010, 6, 16).weekday()) # weekday(): 2
h/ Q. i% ~8 e, d; {, z
. J! m8 Y0 A0 R& M e
# isoweekday() 方法: 1代表周一,7代表周日
' I6 |; D' ]% n# Q i1 V' |
print("isoweekday()", datetime.date(2010, 6, 16).isoweekday()) # isoweekday() 3
- }9 L4 V1 [7 j! s3 U. J
0 y# Y" |( l* p! d
dayofweek = datetime.datetime.today().strftime("%A")
# y+ m( \5 B$ g- _0 D
print(dayofweek) # Friday
2 |4 _1 j) }; W8 K4 J
print("weekday():", datetime.datetime.today().weekday()) # weekday(): 4
. ?, S6 D: P9 o
print("isoweekday()", datetime.datetime.today().isoweekday()) # isoweekday(): 5
6 V2 l7 p4 B2 g! ~! `. p
3 H; Q( ~9 a' ]
八、计算两个日期时间对象之间的时差
' @+ D1 O$ K, H4 P" s
import datetime
4 `( _$ ?3 m% @; Z: V
from datetime import timedelta
: @: V3 s. l( l1 J
$ x9 q: F+ p5 x' {9 y* L% k
datetimeFormat = '%Y-%m-%d %H:%M:%S.%f'
% S. D5 P5 L% x6 v" T/ u# g
date1 = '2016-04-16 10:01:28.585'
7 B& ?4 j3 R: W( Z+ a9 {
date2 = '2016-03-10 09:56:28.067'
, ^4 u. P# Z1 Z
diff = datetime.datetime.strptime(date1, datetimeFormat)\
3 O% U+ Q5 k0 \* X" N
- datetime.datetime.strptime(date2, datetimeFormat)
! N7 u; t/ s( |* G
& D& m* {2 v( k& l* W! I2 S( b
print("Difference:", diff) # Difference: 37 days, 0:05:00.518000
/ v% q' w/ m1 Y( ?# p+ M7 ?
print("Days:", diff.days) # Days: 37
8 B7 }) B5 S$ p; Y! X( J; V. N
print("Microseconds:", diff.microseconds) # Microseconds: 518000
+ W0 u& g7 M$ T, ^
print("Seconds:", diff.seconds) # Seconds: 300
" [; p6 y7 ^; c9 q! q
6 [' B/ w8 G9 V+ Q5 X& Q
九、将 5 分钟添加到 Unix 时间戳
% I s( T$ k4 s- x5 A
import datetime
. ?# H2 {+ ]& V& v* h/ V
import calendar
/ u& g: y7 n* t; @ \, E* \
# y- [) g. Z4 ^* s: l+ G
future = datetime.datetime.utcnow() + datetime.timedelta(minutes=5)
# b0 y( i2 \8 _: X/ |* n
print(calendar.timegm(future.timetuple())) # 1621069619
$ n1 J( S" W# f4 @
: {. g l6 J0 q* S- O
十、遍历一系列日期
6 S: _! V: ?5 m2 M
import datetime
0 C; N. x4 i3 ]6 |6 n+ N1 q1 \, t
7 @+ N- J# ~* l# @3 v1 w
start = datetime.datetime.strptime("21-06-2020", "%d-%m-%Y")
+ u, _% T3 o c4 f& s* J
end = datetime.datetime.strptime("05-07-2020", "%d-%m-%Y")
' V1 U3 A. [1 @
date_generated = [start + datetime.timedelta(days=x) for x in range(0, (end - start).days)]
" K4 a! e0 V: I2 v
# h0 M/ M6 H) o9 P+ P9 h
for date in date_generated:
, H: W$ b; G, x0 P9 W
print(date.strftime("%d-%m-%Y"))
9 G# _- \/ G/ C6 q
9 [0 M& F, I. }8 o2 \% }
十一、巴黎时间更改为纽约时间
2 P" x9 \ M$ Y# e# N( I/ s1 C
import pendulum
" [2 S: e, a4 Q8 K8 r
8 V# K6 j5 ^! K
in_paris = pendulum.datetime(2016, 8, 7, 22, 24, 30, tz='Europe/Paris')
' o1 I9 v, U* t0 g' V
print(in_paris) # 2016-08-07T22:24:30+02:00
! H6 ]4 c- o& g* @
5 S! ]8 z. v: l
in_us = in_paris.in_timezone('America/New_York')
$ s& K. x4 _ ^% f5 H8 h- g
print(in_us) # 2016-08-07T16:24:30-04:00
2 i X- h/ S5 O
4 S9 M3 Q0 z' e4 c. q- T' r
十二、使用 Python 获得最后7个工作日
: D( k( Q3 ]- p+ h. B
from datetime import date
" ~3 _/ R6 J$ o7 h+ V
from datetime import timedelta
2 n: D0 u: r5 V" a0 }
6 L* l$ R% q3 V( z
today = date.today()
. \$ A/ C, @$ B2 X$ w: k. _4 B2 j
$ o# l3 G6 v- U4 L5 a+ P6 K' {
for i in range(7):
; o" a* h0 h/ }/ C) p
d = today - timedelta(days=i)
& j; Q5 Z) R/ U& ?( n
if d.weekday() < 5:
K+ c( |2 x. D0 u; _0 {
print(d)
) G& K4 z4 c, l3 B- m
$ I+ _4 k9 L" e2 U
十三、从今天的日期和一个人的生日推算年龄
* ~5 B- Q: A& t5 j3 `4 R5 Q
from datetime import date
* g4 S! e% u }+ j' q; ~) ^' j
1 r! p3 M4 e, ^& T/ h
8 Q3 C: n7 y! s _8 w! u
def calculate_age(born):
2 D3 S {- N0 W7 ~
today = date.today()
; _8 x! I9 Y% S: z0 `3 f h
try:
; V' `0 e# w5 f8 t
birthday = born.replace(year=today.year)
7 V% o& _+ Y! K$ \" h
except ValueError:
b( b! o: {0 r' S
birthday = born.replace(year=today.year, month=born.month + 1, day=1)
$ a- S1 b5 B# }# U* f2 X
if birthday > today:
7 G3 G: X& x' x2 Z9 \7 n: n
return today.year - born.year - 1
" m0 D$ L' l6 o% z( b8 L$ z( P
else:
3 F- ` `9 B1 a H0 ^
return today.year - born.year
5 l8 q9 |2 Z4 v
% w5 [+ L8 j# s: y5 r
% Q4 o) t% V3 z7 D; K
print(calculate_age(date(2001, 3, 1)))
; @* J. |$ K v3 b& W
2 |+ M. l. S( l( K. }
十四、获得本月的第一个星期二
8 j, O2 k/ n6 n! U& F4 D
import calendar
- X& B s5 ]/ f' z: ?8 H
from datetime import datetime
% X) `' D2 g( k* {
2 X A! a' `3 K ]) c' Z
c = calendar.Calendar(firstweekday=calendar.SUNDAY)
, Q# F9 G9 ]# r( ]1 X. m
monthcal = c.monthdatescalendar(datetime.today().year, datetime.today().month)
1 A* d0 V. W1 u9 N
#Python小白学习交流群:153708845
8 X% `7 R* y/ Q% H: h+ E
try:
0 n; J- C( a& ~" M7 P! e) S$ B( W2 W
tues = [day for week in monthcal for day in week if
4 c6 T8 ]) F; F+ K0 _9 A5 `8 W' M; t
day.weekday() == calendar.TUESDAY and day.month == datetime.today().month][0]
S# L6 [2 y0 ^# J* U* q0 a9 M
print(tues)
8 W$ j3 a' y, h3 ?6 m) N) P' v
except IndexError:
7 ~3 ?1 j7 y9 C! d* R
print('No date found')
( S& x3 y* j. p; F* w5 @
+ d$ T, K' I1 [7 d
十五、将整数转换为日期对象
C {+ i0 y+ g* \1 V
from datetime import datetime
! [% _: |5 x# L; j- A4 }$ I* w
5 z5 a" W' T: Z b2 ~( B) P( n1 `- s4 d
i = 1545730073
V0 I: T0 {( a" ?, v/ n7 e
timestamp = datetime.fromtimestamp(i)
4 N/ t; g, L* y, c
" H: R. q7 L3 z1 s: k" G9 m
print(timestamp) # 2018-12-25 14:57:53
8 @5 h" r% ^/ A# ?& F
print(type(timestamp))
9 V: K Q) P* T( V& P, k
( U8 C7 V' c9 E0 R
十六、当前日期减去 N 天的天数
. _+ [' ^: f5 ]) q" G
from datetime import datetime, timedelta
4 V% X; ^3 o3 _: Y0 R+ i
) y; ]9 l3 r/ a7 m$ f
d = datetime.today() - timedelta(days=5)
$ T7 h' t8 \; N6 F
print(d)
, X# W2 {! C3 ^) W
( @7 B) ^* j2 d* n8 v# ?2 _
十七、比较两个日期
/ F9 n. i1 u+ ]$ B( C
import datetime
1 a; B" P/ x7 B5 T
% ]. w$ N8 C0 Q' A
a = datetime.datetime(2020, 12, 31, 23, 59, 59)
. r8 a* d; O4 t9 v! I, u$ p) y
b = datetime.datetime(2020, 11, 30, 23, 59, 59)
7 [8 z) o2 R$ O% N H# y
8 Y$ s3 [# p8 Q+ b0 p
print(a < b)
" s" z* @2 M$ R( `# q: T; `
print(a > b)
3 L& b+ n: U* c0 X4 z& e4 m# U3 t
+ G% o; D# M" {* C% K5 b+ ?' Z7 k% ?
十八、从 datetime 对象中提取年份
% B- T4 L4 y) G4 n# H% q. e
import datetime
z$ ?6 D9 R+ L& z5 K) Q
: m% `, b" ?, J7 z
year = datetime.date.today().year
% G& n+ K: W# @2 ]9 Y+ C* |& O
print(year)
! w2 w) ^" l1 N) q
% L- i& [. m1 y1 E0 Z1 ]5 o
十九、根据日期找到星期几
$ }8 A1 ?6 Z/ U/ K3 z
import pendulum
7 _9 j3 D* U+ q& O; M9 m
$ P/ P9 c% A; g
dt = pendulum.parse('2021-05-18')
3 D; W' ]! I7 P- A4 `7 A
print(dt.day_of_week) # 2
) v7 f$ d- F5 |' y( c, _
4 `; r; f) s- P" o# J- O8 i
dt = pendulum.parse('2021-05-01')
# F. z8 }9 M z8 H# n
print(dt.day_of_week) # 6
3 `, p4 v5 g- S4 E7 m1 t5 l
b* w/ }7 i y1 t) b, Y
dt = pendulum.parse('2021-05-21')
+ l) f, `$ J1 T5 V8 t4 U. t& k
print(dt.day_of_week) # 5
1 T* R# s$ t3 l Z: o
, i! p) n7 v; l" ?4 Z
二十、从当前日期获取 7 天前的日期
' E/ t: y$ L9 }* Z7 m; B
from datetime import datetime, timedelta
3 X6 v/ A9 b' t- ?& s' P8 @( e% {
* C* }9 M9 y1 ~# D! T
now = datetime.now()
4 M/ M# b' c+ @
- ?& o5 W* Y$ v: a! {1 }6 u
for x in range(7):
4 Y; D3 O* e) }9 V- H8 ], P
d = now - timedelta(days=x)
t+ K$ h0 y0 k, g6 V% O) n
print(d.strftime("%Y-%m-%d"))
) ^( o' f3 q# W* i0 N1 L' O7 @6 a
" [6 } Z E' }
二十一、将两个日期时间对象之间的差值转换为秒
6 M6 \) A- g: e! w6 ~4 N
import datetime
: ?. t- \' d4 w2 C
" r) M3 `# v% u
time1 = datetime.datetime.strptime('19 01 2021', '%d %m %Y')
1 W+ A6 \( B, R. o
time2 = datetime.datetime.strptime('25 01 2021', '%d %m %Y')
$ W+ y! C c1 z
. R, j5 b9 s8 `( C$ P8 P
difference = time2 - time1
* q" }$ ?" s/ x7 H) l; ?) x% f N
print(difference) # 6 days, 0:00:00
9 L/ o+ ^* h" {
+ e9 }, S2 @3 |- W
seconds = difference.total_seconds()
, t- f; ^- {7 P ]! U/ n/ D
print(seconds) # 518400.0
0 S+ O2 e* P8 Y" {* C
2 t! W0 v7 D! R B2 G+ h
二十二、获得任何一个月的第N个星期五
( i4 N1 n/ K4 f) @( }$ h
import calendar
! U' l. t# r- ^. N4 Q3 ]
" S" \' e" n6 [2 w1 V
# 取2021年5月的第三个星期五
9 g. P' ^! M7 Q* ?/ ^" z2 A& Q
c = calendar.Calendar(firstweekday=calendar.SUNDAY)
5 Q1 _7 P: F( J u2 C& o0 q
year = 2021
5 J$ `: ~4 C% G% o2 G; M
month = 5
# u( C( p3 ?: w* c5 W" K1 E
n = 2 # 取第三个
* t e* l( N( u% l! C: D
monthcal = c.monthdatescalendar(year, month)
0 B* J& N" f6 x d
' |9 q9 n( x0 n2 s, h
try:
- M+ T; j& ~' r
third_friday = [
& \0 a3 m o0 |1 j
day for week in monthcal
8 W/ {& G5 [2 B- p" w( p$ X
for day in week if
2 _5 K) l9 i$ o2 P9 m" Z/ q
day.weekday() == calendar.FRIDAY and day.month == month
/ g- V" u$ p7 j9 |: R
][n]
1 E) ]' }+ [0 C- [/ X) _" C9 d
print(third_friday) # 2021-05-21
! h! J1 X2 m8 ]6 D; L0 |5 S
except IndexError:
- ]# N+ q+ R& {) s( b1 f) F
print('No date found')
: W8 U4 m, O& p
1 p9 k7 p8 V+ Z$ ~! b* A4 F
二十三、根据周数获取日期
# T F. W9 f6 |) A' v0 u: ]
import datetime
3 O+ |9 X" o' v1 Q
from dateutil.relativedelta import relativedelta
0 C: \: M7 Z4 P3 J& e. M% {
9 `: J4 ?* P d& E
week = 25
. M" \% D- G0 y" j
year = 2021
# _8 I7 b+ g- A2 ^4 h) W% u
date = datetime.date(year, 1, 1) + relativedelta(weeks=+week)
4 \5 Y0 _+ `# c; R" M
print(date) # 2021-06-25
/ \2 \! l2 Y3 g
* h% u+ W6 h/ `+ x: T) i2 J1 k
二十四、获取特定日期的工作日
2 J0 [8 A- h8 q! C
import datetime
1 _/ B. O. L5 E5 \' j
1 m( O) x$ C% l. Z. T c# u3 d
print(datetime.date(2020, 5, 15).isocalendar()[2]) # 5
0 a: s& W+ V" I! V f$ Q
- q; k) q; o2 Y* Q
二十五、创建一个 15 分钟前的 DateTime
! l$ l4 N6 \+ l" _9 I Y* i
import datetime
: @. E8 A5 N3 b8 P, L) z" R
#Python小白学习交流群:153708845
4 o) _6 {7 L+ m4 ?" d
dt = datetime.datetime.now() - datetime.timedelta(minutes=15)
+ C4 `# ~( X' m9 x
print(dt) # 2021-05-15 22:25:55.897365
4 ^0 O6 V" M) r$ k, D
" v( \# t _5 E% |
二十六、从特定日期获取周的开始和结束日期
' D) P$ J+ _5 U. ]
import pendulum
) G) I8 j. g. x& h
8 R: I$ @* |! S4 i
dt = pendulum.datetime(2012, 9, 5)
# y+ a3 f6 a2 f0 n
* i, K1 L0 x& }
start = dt.start_of('week')
4 h% a/ E9 p& i6 C
print(start.to_datetime_string()) # 2012-09-03 00:00:00
# x/ m- H) P" N5 r: W, L8 s" X' B
, ? {8 p# a8 K$ O2 [5 T
end = dt.end_of('week')
. n4 W3 c$ w$ n* K: w/ H
print(end.to_datetime_string()) # 2012-09-09 23:59:59
& M+ V! W4 {4 c7 T4 ^; S- y
/ [* j. d i+ Y5 N0 x8 b8 M0 {* q" S8 K
二十七、两个日期之间的差异(以秒为单位)
) Z' `, V" E4 Y' O
from datetime import datetime
) c4 Z' r6 W) T1 c$ H
#Python小白学习交流群:153708845
( e7 d8 j. k1 L: w' h, r
fmt = '%Y-%m-%d %H:%M:%S'
+ t; V, O P2 N; e
d1 = datetime.strptime('2020-01-01 17:31:22', fmt)
; H3 z$ f* w6 o" b8 X
d2 = datetime.strptime('2020-01-03 17:31:22', fmt)
7 ]# y8 _. @- u3 }
# ?% v- `7 o- i4 t. e5 K8 N
days_diff = d2 - d1
2 G% F6 Q U; O3 N
print(days_diff.days * 24 * 60 * 60) # 172800
5 Z# c4 W# T" ^: B# N6 [) h2 [
* F! S% B2 x) Q, D8 a/ J2 [) r
二十八、以这种格式获取昨天的日期MMDDYY
% y! `: \' }$ x$ p4 ^1 v
from datetime import date, timedelta
7 f' I* U* e8 ]; _. c4 _" s. v8 r
5 L8 c! y4 ?. z
yesterday = date.today() - timedelta(days=1)
% u$ j6 N" v, T& l) W
print(yesterday.strftime('%m%d%y')) # 051421
" K( U/ N- m) Z: Z, ]
. i; d7 {( u/ S( S f0 D! R3 {5 n/ x
二十九、根据今天的日期获取上周三的日期
. o+ w2 M: d) _% g1 {2 J
from datetime import date
% f: z% i6 p9 N+ @ Y6 F0 g" R
from datetime import timedelta
% o; A7 u* d5 |. r; ?+ l3 a
, |# a7 A% [- y; D6 G- j
today = date.today()
% n9 b3 b0 M4 {2 l
- x9 ^! r/ I% d8 ?/ N. Q# M# {
offset = (today.weekday() - 2) % 7
1 y. W1 S; {" g I% J* p2 V4 }
wednesday = today - timedelta(days=offset)
4 i2 x) n9 b2 H& Y2 Y1 {2 I' f4 B
print(wednesday) # 2021-05-12
) F0 z5 ]$ y t( }2 o) N
9 L4 g3 q: {) a$ T- e
三十、所有可用时区的列表打印
: g# Z1 l% B( {9 \) b
import pytz
& P; D2 F% A4 A1 x$ T* F
, }/ W' t7 M" g; \4 d5 H ]' ?. h
for i in pytz.all_timezones:
% e' |2 A/ v) J" T0 m8 a0 e7 K) ~
print(i)
# ~* f9 ]% u: O9 }* ^* Z: J1 X1 ]
, Z0 \2 d! A h4 O- ~4 d" u" F% S5 \
7 n, K+ E- m( [9 y9 ^2 Q7 _
. ^, R& P; y& I u8 N! Z2 R
欢迎光临 数学建模社区-数学中国 (http://www.madio.net/)
Powered by Discuz! X2.5