数学建模社区-数学中国
标题:
Python处理日期方法大全、三十种方法
[打印本页]
作者:
2744557306
时间:
2024-3-22 11:30
标题:
Python处理日期方法大全、三十种方法
使用 time 模块展示当前日期和时间
# R, j2 U( u/ X$ [- n
import time
/ A/ ]$ x$ ^! V; ?% z
from time import gmtime, strftime
* F2 Q' p% T% U" `* i4 ^- t' F
4 M+ e3 l7 E4 E) p$ z" }% P) K; P
t = time.localtime()
8 o* T! e v- I6 j/ h. A, b
print (time.asctime(t)) # Sun May 7 09:30:37 2017
* ~# X% y7 j. l3 A0 t
print(strftime("%a, %d %b %Y %H:%M:%S +0000", gmtime())) # Sun, 07 May 2017 04:00:37 +0000
& k" Z- P- G2 H) i8 E
print(strftime("%A", gmtime())) # Sunday
; {$ | k3 T. _$ r
print(strftime("%D", gmtime())) # 05/07/17
8 W# k" C8 g0 l% Z0 T( X
print(strftime("%B", gmtime())) # May
5 n2 T, Y: [* o
print(strftime("%y", gmtime())) # 17
/ E) b8 h1 K7 L$ w. ^/ E
" I) h4 K& V5 X& n5 T S
# Convert seconds into GMT date
5 I( n1 i( Z2 j" M7 m/ q
print(strftime("%a, %d %b %Y %H:%M:%S +0000", gmtime(1234567890))) # Fri, 13 Feb 2009 23:31:30 +0000
9 O- H3 H& n: h+ a
8 p) O$ _/ n' |' r4 u+ o/ J, u
二、将天、小时、分钟转换为秒
4 Q# P2 @+ N6 i
SECONDS_PER_MINUTE = 60
9 p5 I3 e- \* i7 Z* V0 U# T
SECONDS_PER_HOUR = 3600
9 W4 b; q5 M; @$ d
SECONDS_PER_DAY = 86400
$ o! k3 e) V8 z6 D+ n$ u( @2 e0 o
+ e4 j8 Q% p |% }3 f
# 输入天、小时、分钟、秒的数量
- j5 s D. S# l; }8 b8 h3 v
days = int(input("Enter number of Days: "))
5 x5 J+ \. D; b$ z
hours = int(input("Enter number of Hours: "))
3 C( ?$ X2 A/ j! K, |
minutes = int(input("Enter number of Minutes: "))
. x) ?$ ]; Y6 s* h* C
seconds = int(input("Enter number of Seconds: "))
/ ?5 V2 g- v4 D5 d1 F( [- f
0 I* O7 E# D3 z- s. F% O! s+ ~5 f/ t
# 计算
6 r, w' t6 f& W
total_seconds = days * SECONDS_PER_DAY
1 W6 _8 p- v; U# g$ }
total_seconds = total_seconds + ( hours * SECONDS_PER_HOUR)
! M6 Y- {7 }9 @1 ^2 c5 c
total_seconds = total_seconds + ( minutes * SECONDS_PER_MINUTE)
, g* i6 o* y/ W, i% {
total_seconds = total_seconds + seconds
6 [- X* O* T6 K+ |. B9 C- @
, k+ Z" \+ a- c0 V3 v% O
# 结果
: m0 D3 j# @2 s# R" o
print("Total number of seconds: ","%d"%(total_seconds))
' i" i! V$ b# F1 Q3 z/ {6 }! G# S0 D
'''
$ Y+ f' X. h: ^* K4 y0 j
Enter number of Days: 5
$ O8 Q- w B. ^* L/ S. X+ x
Enter number of Hours: 36
2 p' p1 y6 b( r9 w. ^! r- S
Enter number of Minutes: 24
0 [; K) M' ^) b" }6 h5 _# z
Enter number of Seconds: 15
! h8 L4 y+ f( q
Total number of seconds: 563055
5 h" v3 J+ \) G" w
'''
) g7 _# F: T( G$ G1 y. M$ L$ L
& O+ a* V0 i; ~0 ^+ V
三、使用 Pandas 获取当前日期和时间
/ w. P* a. ]2 G$ S6 x
import pandas as pd
4 x6 T3 z& h* @% u
print(pd.datetime.now()) # 2018-01-19 16:08:28.393553
U% }' | a% ]' o) x% R
print(pd.datetime.now().date()) # 2018-01-19
7 u9 X- S# |& L/ @
print(pd.datetime.now().year) # 2018
1 L# c: Y5 K7 b! W% p1 }
print(pd.datetime.now().month) # 1
g. {' I4 ?: _" X# h: J
print(pd.datetime.now().day) # 19
" _& y. _- E& A8 y5 h+ ~! V: V2 F
print(pd.datetime.now().hour) # 16
" ^. A3 J. j9 Y0 U! J @: }
print(pd.datetime.now().minute) # 8
) ^3 ?5 ]- Q. I, `& A, t
print(pd.datetime.now().second) # 28
, ^- W* z/ z3 y; M, k1 e
print(pd.datetime.now().microsecond) # 394553
/ G7 I" y9 }4 [/ [- L
: F, x( @) q/ O. c' y
四、将字符串转换为日期时间对象
# C2 H- u! r( |2 H" ?# w
from datetime import datetime
0 `( ?# j! s, f. A
from dateutil import parser
* v' {9 O( N# r4 K1 w8 `
1 Q- v: N/ j Z( s6 Z
d1 = "Jan 7 2015 1:15PM"
* P7 ?8 e# V" {* r. i" a* a
d2 = "2015 Jan 7 1:33PM"
; x, @$ h, S) G3 K. ^) S
& _4 _" G; b' N% L
# If you know date format
8 N6 q" P4 G* x; g3 L, O
date1 = datetime.strptime(d1, '%b %d %Y %I:%M%p')
; R- A$ s4 U: \' g. L
print(type(date1)) # class 'datetime.datetime'
7 s* m) G; V' E9 B2 x: P( u/ F4 ^
print(date1) # 2015-01-07 13:15:00
4 S$ C, n# m4 f
# r7 i1 m: `6 \( L: T0 _
# If you don't know date format
7 D4 e1 U: M1 u! h' P& D
date2 = parser.parse(d2)
) ~8 M- _( |9 e3 {; A: y: Q) U* P
print(type(date2)) # class 'datetime.datetime'
! X: b5 w! g. f: u% T; F* f* `, E
print(date2) # 2015-01-07 13:33:00
2 |! [4 d8 V6 j) \
: A4 p) }8 G# h6 D2 n. Q
五、以毫秒为单位获取当前时间
+ h9 L6 A$ _1 i+ D
import time
2 q8 V4 w7 q# u% Y3 j- s
) T$ I2 [9 c1 _5 x6 v% ~
milliseconds = int(round(time.time() * 1000))
g) P+ D. @- S2 C! L) i) e
print(milliseconds) # 1516364270650
) W# M+ j6 z. n, ]% q! ~- ?4 T
7 J+ f! a/ L/ C% R, N' Z" i; w3 f. B
六、以 MST、EST、UTC、GMT 和 HST 获取当前日期时间
7 Z! y* {& Z' `- I- T2 h8 k
from datetime import datetime
( {- u9 ^) i1 N* J! z+ ^
from pytz import timezone
& w% K+ B( \' @( G; n7 ^7 n
6 O: J. z% p0 h
mst = timezone('MST')
: k& K9 ?& p6 r% X. v6 H+ ?' y
print("Time in MST:", datetime.now(mst)) # Time in MST: 2017-01-19 06:06:14.495605-07:00
+ O6 S9 e0 }5 @% B/ q6 ~
est = timezone('EST')
8 J [$ ` x6 M
print("Time in EST:", datetime.now(est)) # Time in EST: 2017-01-19 08:06:14.496606-05:00
k0 C5 X/ d H4 @; Z1 L5 _+ j
utc = timezone('UTC')
8 K! E& H& v- v' _
print("Time in UTC:", datetime.now(utc)) # Time in UTC: 2017-01-19 13:06:14.496606+00:00
* a/ d x: v0 } N$ j
gmt = timezone('GMT')
5 C9 T% H& H- P' f8 b% D
print("Time in GMT:", datetime.now(gmt)) # Time in GMT: 2017-01-19 13:06:14.496606+00:00
& E# {5 W* r F t& H2 {3 J
hst = timezone('HST')
G5 ]$ H& _, X: \! w/ u4 J4 u
print("Time in HST:", datetime.now(hst)) # Time in HST: 2017-01-19 03:06:14.497606-10:00
* s1 X3 P- M; h1 e6 x0 C
" @' W- i9 l' ~4 [8 ^, B9 M6 [
七、从给定的日期当中获取星期几
6 e/ H& z' ?; G0 {. p" M; F
import datetime
) {* m @1 h3 s
7 x8 e9 v$ D, {# n, e
dayofweek = datetime.date(2010, 6, 16).strftime("%A")
2 u& F7 |5 V# q
print(dayofweek) # Wednesday
" x4 Q" A7 s- j* X
% W; b' |2 D& s- Y# z5 L. I
# weekday()方法: 0代表周一,6代表周日
" ]' E( q) j s; T# e% W( v
print("weekday():", datetime.date(2010, 6, 16).weekday()) # weekday(): 2
8 j& }. K5 x5 k9 Q# j
, |8 R/ z2 `% \% v x
# isoweekday() 方法: 1代表周一,7代表周日
+ ~% x( X0 H. F3 ]3 t* S( W4 ~
print("isoweekday()", datetime.date(2010, 6, 16).isoweekday()) # isoweekday() 3
5 U# s/ O; c% d- N# Q) a6 @. h+ g
; C4 p( @& O; k9 c
dayofweek = datetime.datetime.today().strftime("%A")
; A4 P: R X" R
print(dayofweek) # Friday
& K$ W( Y5 k$ o
print("weekday():", datetime.datetime.today().weekday()) # weekday(): 4
0 f. Q+ u. B1 p: b& S. ^
print("isoweekday()", datetime.datetime.today().isoweekday()) # isoweekday(): 5
, j5 ~3 G; B( k. j) Y! n
7 W/ J" y* ^% f" _0 W
八、计算两个日期时间对象之间的时差
1 r3 |0 n7 Y; L4 J( a
import datetime
a, O% ^- ?: @0 r' ?& e. v
from datetime import timedelta
1 N% N$ w1 E& w' f# o7 J2 M
- K4 X7 N W! c0 p, O; L
datetimeFormat = '%Y-%m-%d %H:%M:%S.%f'
3 V; B' U9 Y; \% S. t; a) P
date1 = '2016-04-16 10:01:28.585'
5 ?/ }- ]& e7 u2 S$ W6 {
date2 = '2016-03-10 09:56:28.067'
) Z3 d: Q6 x3 B l+ M
diff = datetime.datetime.strptime(date1, datetimeFormat)\
1 v4 m6 `& G/ A( l# Y
- datetime.datetime.strptime(date2, datetimeFormat)
- S( w/ t5 G. u' C; y
3 `, z5 c0 s+ c6 r/ {( s- ~' i
print("Difference:", diff) # Difference: 37 days, 0:05:00.518000
) p6 F. f8 v7 N( X' r5 A
print("Days:", diff.days) # Days: 37
! \5 c6 i5 ?7 r- H% |% F" h
print("Microseconds:", diff.microseconds) # Microseconds: 518000
' h; {7 w5 K$ V' A u% ]
print("Seconds:", diff.seconds) # Seconds: 300
- ?& `9 W- i. ?4 m1 h% ` o, W
4 a/ ~" T% E6 o' K% L8 O, ?0 X& p
九、将 5 分钟添加到 Unix 时间戳
; L3 O* T- `. _! T1 G
import datetime
5 L7 N5 q- l- C) s
import calendar
" M [3 P+ H# F* u8 r3 m/ f# ~2 K+ b
5 J7 X5 M" J# c
future = datetime.datetime.utcnow() + datetime.timedelta(minutes=5)
' O' N9 }" Z; c/ a* e7 h
print(calendar.timegm(future.timetuple())) # 1621069619
+ o! `1 x% z' G% X. I6 ~/ o, w
: _4 d4 J7 s D0 x5 m+ J- W
十、遍历一系列日期
: r2 G$ y. F* q. B2 {
import datetime
) s! A: |. M4 W; z
# r" g& I( a9 v0 M+ b) @- A
start = datetime.datetime.strptime("21-06-2020", "%d-%m-%Y")
' M) u6 z- }! U8 z9 R2 c
end = datetime.datetime.strptime("05-07-2020", "%d-%m-%Y")
6 H' P2 T3 Y8 B& X) o/ A
date_generated = [start + datetime.timedelta(days=x) for x in range(0, (end - start).days)]
( D" I1 e/ w' m* b9 O
- k# S6 |5 H* R5 m6 I( |- V/ c8 F
for date in date_generated:
+ |7 y4 A% T' l: @
print(date.strftime("%d-%m-%Y"))
& _0 S$ ~, r$ @) C' W, o
9 k# H% x- \- w v$ u6 w
十一、巴黎时间更改为纽约时间
/ |7 o8 _( Y/ U* t
import pendulum
2 d: g# n) D& o! [5 N" q- W; i
% J1 @- }( M9 Z9 H1 P
in_paris = pendulum.datetime(2016, 8, 7, 22, 24, 30, tz='Europe/Paris')
5 w! y2 h: e+ ~7 K! L: [$ l
print(in_paris) # 2016-08-07T22:24:30+02:00
& M( D* o1 a- n1 r/ A$ m7 X
* |1 e- w0 k% E9 e# w/ G) c* d; q
in_us = in_paris.in_timezone('America/New_York')
" \* X9 W6 h& @# Q7 l) V
print(in_us) # 2016-08-07T16:24:30-04:00
2 y* \) d/ E7 V, |, L1 K' n* ^
+ }/ o! l' ^% A* M* r
十二、使用 Python 获得最后7个工作日
* R: E) T5 I( ]0 I1 h2 ]7 |7 [% O. c
from datetime import date
. A" z N6 X: _% Q3 U
from datetime import timedelta
. M/ h; C0 M7 I1 m. W5 _3 n
6 l }4 M7 U( ~: T7 o
today = date.today()
: g) m7 e8 w' i( q
- B8 F p- i* s, g7 y! T3 j
for i in range(7):
h& J, X) \" s. v r4 g0 y3 v
d = today - timedelta(days=i)
5 [# t) M/ @) ]6 h Q, Z( C
if d.weekday() < 5:
3 a6 e! y U1 t( K1 v2 v
print(d)
$ s$ \3 B( L5 H
. O7 [/ E0 X9 O4 \
十三、从今天的日期和一个人的生日推算年龄
6 k6 d4 H( w, B% J6 `
from datetime import date
' H* r: @+ ] d# j! S4 M6 p
/ ~. J1 Q8 K! G7 n
5 N s! T$ c0 }, \5 g4 [
def calculate_age(born):
2 w$ B8 q" _3 F" @! O+ k, [1 l' g
today = date.today()
5 J8 S+ d* E8 A4 V
try:
3 n6 G) C j7 h) X# h
birthday = born.replace(year=today.year)
, F/ W. }+ d; ^( Z
except ValueError:
! Z5 ?# I* M& w+ z' S/ h- \
birthday = born.replace(year=today.year, month=born.month + 1, day=1)
* T, j7 M* _: `" G3 b" T
if birthday > today:
4 f ?% M) d a! O& K2 b. L
return today.year - born.year - 1
0 _8 ]$ V; D6 D8 K* x! Z" t
else:
( q- V3 x+ @( ^) w2 M6 L! W
return today.year - born.year
+ b$ V3 y# q8 {" O2 D
+ P/ z' L6 A; p2 L; S7 p
8 w5 Z8 A) j" _4 d1 R2 A
print(calculate_age(date(2001, 3, 1)))
( i* \8 v6 `4 s- N+ m
3 P" w% f/ j ^: \" K2 ~1 k/ Y
十四、获得本月的第一个星期二
+ \" G3 t1 Q( P c# @
import calendar
$ b0 n! X" d; l9 c# u8 d2 d ?
from datetime import datetime
. j9 G$ l- w0 P g
1 _6 r3 m3 I! \/ {9 h$ I: Q# q
c = calendar.Calendar(firstweekday=calendar.SUNDAY)
% L; G: _( O0 L6 s; Y" {) L0 u
monthcal = c.monthdatescalendar(datetime.today().year, datetime.today().month)
4 @0 K5 J/ Q+ E9 H
#Python小白学习交流群:153708845
& c& N6 o: {7 F
try:
; `6 Z" r- C8 R* B# ]
tues = [day for week in monthcal for day in week if
! ]/ j, r5 g. v2 m/ q/ u& T3 e
day.weekday() == calendar.TUESDAY and day.month == datetime.today().month][0]
- E* d# K: p5 x. b
print(tues)
" L" l D: b7 {
except IndexError:
9 c2 S- N+ G0 G+ |8 K8 T7 G- R
print('No date found')
3 g+ X8 l; g+ S4 l3 w9 z+ e
6 s8 Y) t$ ?& c( f
十五、将整数转换为日期对象
& ^& R- _ @# v, O9 B) X3 N' K1 ~
from datetime import datetime
a3 v2 d" d+ Y6 v# \* p
2 B* i- \0 x2 d4 A: ]( N: \( }
i = 1545730073
8 h+ C8 K4 O" A" k
timestamp = datetime.fromtimestamp(i)
5 M8 u4 b F7 z3 G/ P. L% s
+ ^0 c0 P. d; S6 s
print(timestamp) # 2018-12-25 14:57:53
0 l1 f/ e! q$ F# G" f. E- g5 a
print(type(timestamp))
; W4 m$ W6 @: E/ p* |) f* R
) Y) d, t0 Q" r& \3 g5 o8 @
十六、当前日期减去 N 天的天数
, @$ P% h" L9 O, e: |) }/ U
from datetime import datetime, timedelta
0 L/ v/ D8 @( }, E% G7 G
( p: K8 t# M+ e3 N1 Y M( E& O6 R- B
d = datetime.today() - timedelta(days=5)
' z' Q# P6 f0 z6 I$ `
print(d)
& {& e! }' A, V1 ?6 S
+ v, }' Q! U" p0 x) S$ c" s
十七、比较两个日期
+ w2 D1 j* U# G: e8 P X* \0 g+ j
import datetime
! c: D; ]$ l3 r& T, b
q6 p/ D# o _4 f% ] S; \+ \
a = datetime.datetime(2020, 12, 31, 23, 59, 59)
' r! a) \: }7 Y3 ?) K' ?" @; I; f
b = datetime.datetime(2020, 11, 30, 23, 59, 59)
* s/ Z' v) k$ x' e; ~: k
4 M- Z% a9 Y: D* B$ S
print(a < b)
9 Z `; T2 J6 C# A
print(a > b)
3 T6 r0 B$ I1 N Z. l) B- @
2 f" G4 E. d5 h4 B& u
十八、从 datetime 对象中提取年份
2 m! T6 B% ~7 V) N
import datetime
1 ?% ]/ Z% ~6 X% V2 E7 e C
7 A- L3 H6 ^8 p9 k: y" F& z
year = datetime.date.today().year
6 \7 i$ I" }/ f0 j/ V! n/ N
print(year)
3 Q' ^$ N( G+ P1 j
) x C: G! W5 _' I/ J
十九、根据日期找到星期几
. |9 ~+ _3 a8 z6 a* j9 u
import pendulum
7 n0 v5 d7 R( K, ]- L8 |
Z1 U% Q( o% o5 x* j6 t# j; [
dt = pendulum.parse('2021-05-18')
( Y% j o6 F0 C4 w; W
print(dt.day_of_week) # 2
' T- g& T) u4 Z& p/ s4 z
0 p7 k2 Z( W* ~8 j k' [
dt = pendulum.parse('2021-05-01')
, K! R: q. m6 R
print(dt.day_of_week) # 6
, @7 V; x1 q3 Y4 v
! p- G, S, d7 Z3 M# w0 l
dt = pendulum.parse('2021-05-21')
0 L7 a7 ?, x2 m& ~3 w$ p- s
print(dt.day_of_week) # 5
, I0 H( k3 A, a& F# c' X
/ [; y) ]4 q; v
二十、从当前日期获取 7 天前的日期
4 o5 B9 w: t+ i
from datetime import datetime, timedelta
1 Y& P' z D4 F9 Z
( t+ @& d" ?9 Z. S7 O
now = datetime.now()
4 e% C& x0 F! r# Y6 l1 F) n# G+ X
# W+ l. v6 d& F4 ]
for x in range(7):
; J- q0 _+ y. V* G
d = now - timedelta(days=x)
* V8 t6 j" E$ V, n! O
print(d.strftime("%Y-%m-%d"))
t0 T' x9 ^6 {4 D' m$ f# F
( W! e; N* e+ M& e( y
二十一、将两个日期时间对象之间的差值转换为秒
' p# f- k% b |7 q0 R/ b3 z, T
import datetime
( e7 u/ \7 C! W+ I7 P4 [
+ E) v% A( G) J- C7 \
time1 = datetime.datetime.strptime('19 01 2021', '%d %m %Y')
6 h+ @& s. J3 S! z9 M
time2 = datetime.datetime.strptime('25 01 2021', '%d %m %Y')
% V1 J1 r# h; B4 r# h+ Q- u
, I* K$ b- O( C& h& d( V, }$ M, Z
difference = time2 - time1
& F0 j: K |8 ?8 Q9 Y6 i
print(difference) # 6 days, 0:00:00
$ ^2 K* V7 y( z* W7 { R9 c: E
. r7 w- W x2 c7 ~- ~* Z0 \$ J( Q
seconds = difference.total_seconds()
8 s: {* Z9 h( k7 R w* i
print(seconds) # 518400.0
" _4 \4 z, I9 U
1 ]( c3 e. I4 O4 r
二十二、获得任何一个月的第N个星期五
2 Z& t7 W1 T5 A! s v% K; C
import calendar
7 ?4 \( {7 G; J0 y O
8 A& [$ Y$ D* _ `% g8 |7 p4 b
# 取2021年5月的第三个星期五
2 A, ^# d% b) w9 U) I
c = calendar.Calendar(firstweekday=calendar.SUNDAY)
4 p& T$ I3 u' M* Q
year = 2021
: |$ d/ Y E, H5 Q4 V1 W/ W# y
month = 5
9 f0 | b J }, p+ m
n = 2 # 取第三个
6 Q$ c. @( d, s9 O8 z5 S7 ^' g
monthcal = c.monthdatescalendar(year, month)
$ V* ^( L" h# b e; i) g
' M/ l: Z1 I$ x! H) s9 m
try:
; P- R" o1 v' s4 n7 V' l* S- R
third_friday = [
# }1 Z9 F+ ?9 M1 _/ c
day for week in monthcal
; z! ]& |1 {6 G) c6 H
for day in week if
6 e6 o5 T0 j3 p" d& L `5 c
day.weekday() == calendar.FRIDAY and day.month == month
3 P7 [; `" c; D6 B& G" e Q$ [
][n]
( I0 G0 q$ R* t8 a# D& R, f
print(third_friday) # 2021-05-21
5 l! d r2 m( W# O y& D6 @6 x
except IndexError:
0 T3 W4 a$ R& _# L4 P2 _
print('No date found')
: B+ a' H; N( R3 o) J
$ P8 `" W* {% a" a( W; X
二十三、根据周数获取日期
' y. M0 X2 ] j# a# J
import datetime
+ F+ _& t1 R( b+ n6 k4 t9 j, V
from dateutil.relativedelta import relativedelta
, ?: n4 w0 A4 y) R* b6 r. S
% {6 s2 G' J) s* c
week = 25
- y$ [7 N8 P e) [% j9 h& S
year = 2021
* |* S* {' ?3 t+ C. b$ q; _
date = datetime.date(year, 1, 1) + relativedelta(weeks=+week)
. N4 Q4 M- d' b$ n$ u
print(date) # 2021-06-25
6 W! e ? `2 `! a7 r, H+ S
3 o' ]$ Z4 H3 {6 r, j
二十四、获取特定日期的工作日
* y1 A0 F6 ]/ m" G
import datetime
; i$ l6 K5 A$ s7 \( d$ W1 n
9 R+ v2 b4 T9 o# a9 w: k
print(datetime.date(2020, 5, 15).isocalendar()[2]) # 5
' g" ~2 u/ P. s, q% a
! W' E! J, a( m
二十五、创建一个 15 分钟前的 DateTime
$ s9 X& s# B# N5 Y# B9 x
import datetime
! G& {" I; |/ _3 G( b. l5 E
#Python小白学习交流群:153708845
% m, C% q% P3 z- T
dt = datetime.datetime.now() - datetime.timedelta(minutes=15)
( `3 m& e6 e' E3 j& j- X: R" P
print(dt) # 2021-05-15 22:25:55.897365
) z4 k( y2 W+ r6 `
' y7 x: @& Y! D5 {2 n9 l& [; M
二十六、从特定日期获取周的开始和结束日期
0 B5 j m# Y a
import pendulum
( D- P" U1 T+ J9 @) _ b
7 Y! w5 R: }8 y1 a9 P z! Q T6 n
dt = pendulum.datetime(2012, 9, 5)
9 c, W6 Y6 s8 M/ n- P
) n4 W% D7 G0 |# u! Z ^7 H1 _
start = dt.start_of('week')
5 d+ H( J. x/ C1 e( V
print(start.to_datetime_string()) # 2012-09-03 00:00:00
' O! k# B! ?, g' ~5 Z
# H; B$ b; f, m# d
end = dt.end_of('week')
3 y6 ?2 x6 R/ C3 v9 ~
print(end.to_datetime_string()) # 2012-09-09 23:59:59
$ _$ v( Z- K3 i$ J8 U: s& L
& }0 o) ]0 X, F0 z4 G, U
二十七、两个日期之间的差异(以秒为单位)
& ?% ?) C# |4 |: Z( V9 x W+ V
from datetime import datetime
( j. k- X* n8 d: c9 _' E
#Python小白学习交流群:153708845
) e" w. H/ C! v. V7 S0 H
fmt = '%Y-%m-%d %H:%M:%S'
0 w% _* L+ u3 m% D5 W& Q9 f$ M& f
d1 = datetime.strptime('2020-01-01 17:31:22', fmt)
% f) R9 K6 Y n: m- R+ F
d2 = datetime.strptime('2020-01-03 17:31:22', fmt)
9 U- \" k0 K& g' S9 {! }* W2 h
% L3 k+ j. Q" `$ f
days_diff = d2 - d1
4 t5 C4 E! m7 Y2 C2 H3 }, {
print(days_diff.days * 24 * 60 * 60) # 172800
1 K& \5 M' p3 W3 { X0 @. f
6 V E2 t& S6 ]/ K$ ^
二十八、以这种格式获取昨天的日期MMDDYY
/ m7 R9 g2 F6 V5 C0 Z
from datetime import date, timedelta
2 x7 Z7 i1 S& a3 H
+ e- E3 v$ h) X7 w7 s
yesterday = date.today() - timedelta(days=1)
3 J* l8 {, ^4 L4 C4 w4 U+ K
print(yesterday.strftime('%m%d%y')) # 051421
! w: b0 b5 R4 v, H1 H: l( v5 Z
% w0 m7 G2 ]! F1 {, W4 M2 g4 L
二十九、根据今天的日期获取上周三的日期
) m+ F+ p/ G- m0 T6 |! R
from datetime import date
& E: C& c0 ^$ X2 n! {
from datetime import timedelta
( N9 W J; p2 _, w8 b- D: i4 ~% j
& D+ ]' r6 R3 }& |% y2 g/ |( r
today = date.today()
! w3 c/ ~# b7 }0 ~' C2 ~
0 R# Q# H9 k* v2 \0 R: [1 n) Z
offset = (today.weekday() - 2) % 7
& e. M, M2 n7 U; X- F' E
wednesday = today - timedelta(days=offset)
& T. O1 ^+ Y' [8 O7 z
print(wednesday) # 2021-05-12
: B2 g& @7 p5 R0 V3 ^
) {8 K- @( a( P. {2 B" D
三十、所有可用时区的列表打印
% E1 q( R5 `! C5 g! z/ j3 W
import pytz
7 S: k! T& I6 X
$ p3 |2 m( A# t; L& Y
for i in pytz.all_timezones:
6 l& l& w) u2 [5 l! t. R. q( O
print(i)
: y! Z+ @. E( D) r% W4 R
1 l: W; C! w3 x0 a
$ ]1 H; N. f2 X$ V7 l- h1 j o
5 j* Q- {+ Q% e3 k2 P) M
欢迎光临 数学建模社区-数学中国 (http://www.madio.net/)
Powered by Discuz! X2.5