数学建模社区-数学中国
标题:
Python处理日期方法大全、三十种方法
[打印本页]
作者:
2744557306
时间:
2024-3-22 11:30
标题:
Python处理日期方法大全、三十种方法
使用 time 模块展示当前日期和时间
! n7 d4 v7 R9 F( ^
import time
5 b5 f9 `7 B4 e, v- v
from time import gmtime, strftime
( F2 y; u \9 U0 ^5 B" u+ ]
% d7 h/ @6 r& X; l. x U
t = time.localtime()
, ~! V- y# f2 E; s
print (time.asctime(t)) # Sun May 7 09:30:37 2017
# G: P& i& J9 O" E5 b- Q% `( l5 `
print(strftime("%a, %d %b %Y %H:%M:%S +0000", gmtime())) # Sun, 07 May 2017 04:00:37 +0000
; _$ d# q" O$ w
print(strftime("%A", gmtime())) # Sunday
& A5 Z* o; [$ }# |+ p
print(strftime("%D", gmtime())) # 05/07/17
3 ~% g* c4 d* M4 v, U* ~
print(strftime("%B", gmtime())) # May
) @% W* I7 |4 d, |
print(strftime("%y", gmtime())) # 17
4 l! B! k) R* M% p/ H x3 G
B) o4 u, |- i- x2 a
# Convert seconds into GMT date
# x4 ^3 J x! |, I& O" }
print(strftime("%a, %d %b %Y %H:%M:%S +0000", gmtime(1234567890))) # Fri, 13 Feb 2009 23:31:30 +0000
& ?5 v+ b4 S, I
- @8 q0 y4 B" M& o2 _/ d
二、将天、小时、分钟转换为秒
0 p( Y$ K" j) l* R8 Y5 Z" {7 K3 o- a
SECONDS_PER_MINUTE = 60
) L" K8 A; f9 B' G8 J
SECONDS_PER_HOUR = 3600
! ]: M% y* r# V2 B# m
SECONDS_PER_DAY = 86400
. k3 F( J9 R: Q) s$ B/ X
5 {; q; ~4 g# K' U# d9 U& C
# 输入天、小时、分钟、秒的数量
, l) [8 L+ j9 R: U% F3 V: S0 ^
days = int(input("Enter number of Days: "))
& d2 w+ x. n9 N
hours = int(input("Enter number of Hours: "))
/ R) u: n" r, Z/ e
minutes = int(input("Enter number of Minutes: "))
" e# f+ C( d" g" l7 u1 W$ h
seconds = int(input("Enter number of Seconds: "))
$ Q% S7 \0 s6 F0 Q6 k
8 }% o' k& O2 m6 o
# 计算
! r7 b' e# ~! S
total_seconds = days * SECONDS_PER_DAY
, Q& K2 }3 p2 K3 c* o j$ ]7 M
total_seconds = total_seconds + ( hours * SECONDS_PER_HOUR)
! N& [: l: {5 q
total_seconds = total_seconds + ( minutes * SECONDS_PER_MINUTE)
$ U4 B7 G& z& {0 Q5 d
total_seconds = total_seconds + seconds
3 A6 z4 v: c ]/ i; @" I# E
# i9 d w2 [4 }& R
# 结果
. i- P' k3 L8 H
print("Total number of seconds: ","%d"%(total_seconds))
9 v1 U1 ]+ e. u. U
'''
+ X; P7 A3 c1 P1 T% ?
Enter number of Days: 5
1 W" n: u4 s! v, e, g9 W% a; P( ^
Enter number of Hours: 36
) F5 j6 }0 X" y& w6 e0 v( `" h
Enter number of Minutes: 24
# @0 e. \, C* X5 ~' M- {+ j
Enter number of Seconds: 15
+ ?$ w0 |' w6 r/ \& [ g
Total number of seconds: 563055
0 m% F9 [- g/ M5 B9 G
'''
* I7 o1 _& q( ?9 m7 y; g7 }+ L
7 Q& I; v+ l! t' P
三、使用 Pandas 获取当前日期和时间
% R c. S* R7 j& F: ~# \( i
import pandas as pd
+ m( w0 u' @9 X. @* I
print(pd.datetime.now()) # 2018-01-19 16:08:28.393553
7 ]3 P, H0 ^$ ]
print(pd.datetime.now().date()) # 2018-01-19
9 ]4 W' p, U; k+ r* a7 W
print(pd.datetime.now().year) # 2018
! O. y- t( L9 G! `0 m& ?; T, y0 g! y
print(pd.datetime.now().month) # 1
% D$ @! Y" P! Z
print(pd.datetime.now().day) # 19
' t: M% W9 J# g+ E. n) x5 |: V
print(pd.datetime.now().hour) # 16
' l( u2 K/ J5 N
print(pd.datetime.now().minute) # 8
2 G! H( ^% h. X& W. A# p
print(pd.datetime.now().second) # 28
3 a8 \6 o1 n- s# C& P+ y
print(pd.datetime.now().microsecond) # 394553
" j& S4 [* @% G; h0 o
3 H: l- g' j h3 b
四、将字符串转换为日期时间对象
3 G7 ?1 B2 a& w4 n9 Z' K# Q
from datetime import datetime
5 G v5 I( m, p/ S1 t- ` \- h9 |
from dateutil import parser
2 F+ V5 J' [! ?# V0 Q
2 v$ b/ u5 Y* j, e
d1 = "Jan 7 2015 1:15PM"
1 q" X+ J. t/ Z7 G; C, J
d2 = "2015 Jan 7 1:33PM"
- ?; z" k( ~( Y" \ p6 C
% G/ J7 U0 N T& J5 |( }
# If you know date format
6 m3 u6 E+ d/ j' P) O+ v" Z8 t1 P' J
date1 = datetime.strptime(d1, '%b %d %Y %I:%M%p')
# ]6 D6 W7 F3 q' v
print(type(date1)) # class 'datetime.datetime'
0 ~7 ~6 W% y. B+ r5 N' ]
print(date1) # 2015-01-07 13:15:00
9 ^ t2 E3 p, h) u3 g6 g: f9 v
" T/ N, U) q7 _3 f3 S
# If you don't know date format
8 m% p3 @: L. \/ P% e6 G7 E
date2 = parser.parse(d2)
& l5 w" q% j$ ?7 F
print(type(date2)) # class 'datetime.datetime'
6 K& G0 i- T H1 l5 u
print(date2) # 2015-01-07 13:33:00
: A6 O$ R/ Q' |
9 \- H" H0 @" n6 D% M3 r
五、以毫秒为单位获取当前时间
3 o) |3 _1 I4 f6 E" ]4 ~9 t
import time
% ^& u/ |7 q, } o8 D
# g) b! x3 K- H5 o( N
milliseconds = int(round(time.time() * 1000))
* g1 r5 v! Y; d! W" T5 S
print(milliseconds) # 1516364270650
1 q+ ?. y) y' B6 A3 }4 w ^4 m- U" V
/ J) `( t& a# k8 b; V* f+ g
六、以 MST、EST、UTC、GMT 和 HST 获取当前日期时间
, k2 `& x, I$ m* F
from datetime import datetime
- y: _4 d) ^+ z# t3 P0 @6 G9 P
from pytz import timezone
3 W) D) p s2 Q' k' ]- g3 L
1 p# Y7 I' H2 F; l
mst = timezone('MST')
( c8 x+ W8 c4 N/ \) D% s1 H
print("Time in MST:", datetime.now(mst)) # Time in MST: 2017-01-19 06:06:14.495605-07:00
( F8 d% e6 h1 y2 u+ X* I+ @
est = timezone('EST')
8 c w/ M: R4 f1 c; G- a7 I2 d
print("Time in EST:", datetime.now(est)) # Time in EST: 2017-01-19 08:06:14.496606-05:00
8 n4 l5 \1 ?) J2 w. K( b6 ~5 [) }
utc = timezone('UTC')
" r9 e( t. F% Q% G$ O
print("Time in UTC:", datetime.now(utc)) # Time in UTC: 2017-01-19 13:06:14.496606+00:00
8 p9 o1 f# r k; Y! J
gmt = timezone('GMT')
% O. \9 F/ s: m# Z
print("Time in GMT:", datetime.now(gmt)) # Time in GMT: 2017-01-19 13:06:14.496606+00:00
6 S9 l! c" M# t0 x! }4 G% V
hst = timezone('HST')
; ~* J- f8 f: A) M. ^. s( y# ^0 w
print("Time in HST:", datetime.now(hst)) # Time in HST: 2017-01-19 03:06:14.497606-10:00
B5 H' |# @, H3 ^9 t
. G" u8 a4 O' J6 y: q
七、从给定的日期当中获取星期几
/ s+ ^3 a) ~% G9 s' n0 n8 C
import datetime
6 Y7 ^9 F& o X' p, _% G- u. L8 ~
1 o2 h$ o1 h4 H( O8 o: q7 \# `
dayofweek = datetime.date(2010, 6, 16).strftime("%A")
# Z0 W4 @( s8 O- ^/ B
print(dayofweek) # Wednesday
+ H! Y8 g2 W5 J- K
/ s% b8 K6 I2 ?1 j0 H- w+ |
# weekday()方法: 0代表周一,6代表周日
$ x3 r# ^9 e3 |& } p
print("weekday():", datetime.date(2010, 6, 16).weekday()) # weekday(): 2
8 h2 J0 L9 W' B4 E" r* l6 B
) j [8 r, F5 @
# isoweekday() 方法: 1代表周一,7代表周日
+ q; x9 R- E3 C; k R
print("isoweekday()", datetime.date(2010, 6, 16).isoweekday()) # isoweekday() 3
% z u# v9 I+ k9 h( |5 n3 [: I
* t; I6 a# A# ?# g' y
dayofweek = datetime.datetime.today().strftime("%A")
3 a8 v/ z1 U; E& d/ K
print(dayofweek) # Friday
9 A1 X( i# U( f$ }3 A9 u5 D
print("weekday():", datetime.datetime.today().weekday()) # weekday(): 4
$ `" M- }5 o* Q/ Z3 Q6 R& n" n) T, M
print("isoweekday()", datetime.datetime.today().isoweekday()) # isoweekday(): 5
" Q1 B- [# L) I6 o9 B% P$ b
, {! M' f. ~0 k* g3 {" t, H: q' W
八、计算两个日期时间对象之间的时差
2 z! y1 \/ A- E6 ^- t) @" m
import datetime
' _3 `6 X& Q; }! E, t( w
from datetime import timedelta
# L+ E+ a( ~, b* Q- o; L9 y6 A
% L, u# R' Q1 O2 u. T
datetimeFormat = '%Y-%m-%d %H:%M:%S.%f'
) p! U- d' s9 K
date1 = '2016-04-16 10:01:28.585'
$ C8 _) N% ~+ m" B& S9 o
date2 = '2016-03-10 09:56:28.067'
4 i) f8 w$ ~' t# @- A
diff = datetime.datetime.strptime(date1, datetimeFormat)\
- f$ J' I* U& H1 N. U# M/ o$ K8 b" b- G
- datetime.datetime.strptime(date2, datetimeFormat)
; A/ J% _/ x/ R3 Q
D f- p1 [- w- J9 C' D
print("Difference:", diff) # Difference: 37 days, 0:05:00.518000
0 x3 t0 d2 o( J& q% n( T+ e2 o* F
print("Days:", diff.days) # Days: 37
- f- O4 w! C% J- c4 Z
print("Microseconds:", diff.microseconds) # Microseconds: 518000
; R% y) H" Y& [, j% g) M
print("Seconds:", diff.seconds) # Seconds: 300
- c3 Z4 T" [/ k: B N; k' w
5 _- R+ r9 C/ w( E0 N( W
九、将 5 分钟添加到 Unix 时间戳
1 {( G4 {: f$ r- [- J
import datetime
0 d: _4 P. @9 r8 I! @+ H
import calendar
& B0 R+ N; N& K' i5 }
0 {$ l" M8 m8 T" Q s" w$ ]
future = datetime.datetime.utcnow() + datetime.timedelta(minutes=5)
?# B, O3 }% _
print(calendar.timegm(future.timetuple())) # 1621069619
, }6 t0 F. k3 ?* q8 Q5 @' N }7 y) e
0 a3 P; E- s# C. R
十、遍历一系列日期
( `+ E; Q( D! i# u+ j
import datetime
2 i2 V$ i- I) b7 H
, _) J# b5 i, E0 Q$ i; H" y
start = datetime.datetime.strptime("21-06-2020", "%d-%m-%Y")
) y( v2 x3 W! u5 f4 x% ]
end = datetime.datetime.strptime("05-07-2020", "%d-%m-%Y")
9 `5 p* F* M1 r# U$ O C y, h
date_generated = [start + datetime.timedelta(days=x) for x in range(0, (end - start).days)]
! S! Y7 q( R' @3 z6 p! u- @
4 O7 G0 y$ C9 }' J) j* u ^+ a/ F+ b8 g/ S
for date in date_generated:
. {$ l" q( S: C8 k4 `
print(date.strftime("%d-%m-%Y"))
* Z1 ?5 U& N/ B% j1 @- l7 d
V) g8 @6 C3 v- m% e9 k" K# V0 s
十一、巴黎时间更改为纽约时间
! i- Z$ k- S _( L/ R# a' F2 g
import pendulum
- K" o5 F( u5 X- h2 F
2 ]& R; D" b6 n9 Q2 V
in_paris = pendulum.datetime(2016, 8, 7, 22, 24, 30, tz='Europe/Paris')
; a. A7 B$ o; w1 E) {2 m: E
print(in_paris) # 2016-08-07T22:24:30+02:00
7 U. n% ^# d/ v& e+ L0 H# t. l
: q5 m, j3 l& S) m9 D: r8 Z0 y
in_us = in_paris.in_timezone('America/New_York')
) A; P! J6 d% n% R8 {" N
print(in_us) # 2016-08-07T16:24:30-04:00
: V: Y$ \6 v* N5 R- g J0 z. k4 z
* f3 h5 P. A+ B0 a9 i
十二、使用 Python 获得最后7个工作日
* Y" i2 `5 H9 \' x; Y% g1 P) H; z* l
from datetime import date
! z) S6 X* W0 f" J; C. J5 P7 _
from datetime import timedelta
& c. D: F( W S8 w; o0 V/ A3 u0 {
6 t' E+ Y' Z# S9 o& L! k* }2 b. s
today = date.today()
- a0 g% U2 E( D6 @3 y
9 [+ U% p% k: `8 p
for i in range(7):
* @+ S6 x/ r, s. w6 }
d = today - timedelta(days=i)
3 @6 X+ j! k7 l6 ^
if d.weekday() < 5:
0 x5 y/ C2 I" C) W
print(d)
+ I# _( g D; y
0 i2 y1 b; d) |7 f6 t" Y8 R8 U2 |
十三、从今天的日期和一个人的生日推算年龄
; h" r5 V* G9 b, c1 Q" D. _$ i
from datetime import date
( |5 C B2 C* P3 I2 Q0 _6 T/ ^
9 E4 b/ e: z: X; Y+ R
* }" W9 A# f2 U X0 m& l0 b+ J
def calculate_age(born):
I, q7 y! ~& D* E8 O. h% u
today = date.today()
8 X0 j- ~' x3 [- S& X `3 C
try:
2 c1 }! o& C8 \9 A: ?4 C. M+ C
birthday = born.replace(year=today.year)
# H- ^' P# t7 o7 d1 C- s) q
except ValueError:
8 M- y' H- u" Y
birthday = born.replace(year=today.year, month=born.month + 1, day=1)
: v) }- l# W: }8 [9 N2 U
if birthday > today:
0 Y/ s a5 p( a% H
return today.year - born.year - 1
" ?1 c8 A; T z, R5 b- R: f
else:
5 L* c/ }. p: Q/ {" |6 a
return today.year - born.year
/ U- }1 G! D2 @( V7 }# P
* f" D* }0 O# {6 ^
4 _# w1 _6 b( u: `& f
print(calculate_age(date(2001, 3, 1)))
* R+ r$ `" } h, I, \4 e; X7 S8 E
9 T+ k& x4 W% G( n
十四、获得本月的第一个星期二
0 [ g8 \4 d6 {8 _ {1 J% l
import calendar
5 Q2 R& g! t2 N; b3 ^: ^
from datetime import datetime
/ G: Z) A' y, F; l" b7 e0 J6 m
/ h: x, l$ i8 M! |) T0 O2 P
c = calendar.Calendar(firstweekday=calendar.SUNDAY)
% ]; O$ }+ E; Y, Y
monthcal = c.monthdatescalendar(datetime.today().year, datetime.today().month)
# T" F5 U) w- }* l0 U
#Python小白学习交流群:153708845
0 o- z$ D ^+ V/ i8 m& g5 Z A
try:
s8 c" u) o. _$ h) c
tues = [day for week in monthcal for day in week if
s6 S. v# k+ b3 x! \8 K
day.weekday() == calendar.TUESDAY and day.month == datetime.today().month][0]
6 N, J! h; ]0 t9 ?; i
print(tues)
9 {8 K; G7 }) y% Q" P3 w. r
except IndexError:
! O+ P& T, f/ n- H5 b( h
print('No date found')
/ f$ N. k, g% B/ | A* x
7 U) c# a h: m# o* `
十五、将整数转换为日期对象
1 t# C% ]& D2 B/ O- L" p$ F
from datetime import datetime
) g- w) I; I6 ^, ~8 P' M) F" M7 V
" P* R! T2 Z" E9 q2 [
i = 1545730073
5 v' j% e0 x5 o$ g' S S: G, V
timestamp = datetime.fromtimestamp(i)
8 M& f# m' X/ B( H' F! R
6 [$ n' U$ G5 D' d1 L
print(timestamp) # 2018-12-25 14:57:53
3 F J6 B7 R9 M7 _$ f" i/ A* p
print(type(timestamp))
* o \0 f, o( y) A& v6 g3 ~5 _
9 h* o3 `* U6 v4 S9 ~
十六、当前日期减去 N 天的天数
. r8 @% x/ [) A3 I' C5 Y
from datetime import datetime, timedelta
" h3 J2 y6 J& v1 @& x8 f
! j" Q* z% L3 J3 h
d = datetime.today() - timedelta(days=5)
4 l! }. ?8 b. O$ _# x! T/ B
print(d)
% s' h9 F. p" D$ {
3 [2 ]5 v- @$ X! @& a
十七、比较两个日期
0 n& ^! {) T2 {% q2 s; |
import datetime
2 L$ e; P" F- L$ y
7 k* I4 c0 u7 d* T, X2 r/ y
a = datetime.datetime(2020, 12, 31, 23, 59, 59)
0 N3 Y) k* X9 `8 X5 _
b = datetime.datetime(2020, 11, 30, 23, 59, 59)
5 C8 ~& c" R+ a
' z6 n3 c z9 a! }$ Z$ D
print(a < b)
0 k4 B5 g$ F. W9 s. h
print(a > b)
, \* q$ C" N. p, D, c
( F( q& [) ^' I& x# M0 M# ^
十八、从 datetime 对象中提取年份
( B% e) o3 n; T* [+ b
import datetime
5 P" ]5 `2 f) [/ C
; i5 y; J3 Y% i9 N/ N$ L3 A( f y) Q
year = datetime.date.today().year
9 g" r# g( R( M, I9 f& t6 a
print(year)
. K( K/ |% S- _" a3 Y- ^' c( s; @
, a; c7 O: H# D4 E C7 i" P" p% h' o
十九、根据日期找到星期几
& Z4 Y7 i: i8 N" k6 ?: [/ u
import pendulum
8 M6 z& _% ~2 z: m# u" e; G
, W f4 h) k0 F/ I
dt = pendulum.parse('2021-05-18')
, J) Z; `& ^: X8 Z4 x8 l* a
print(dt.day_of_week) # 2
, o1 d; K s. `1 W/ q9 ~( s/ g# q
$ T9 h5 w% _1 y0 A% s
dt = pendulum.parse('2021-05-01')
7 @3 |4 g; l+ I2 ]' V7 u
print(dt.day_of_week) # 6
! v' N; t* U& x6 K5 p/ q+ l
" I# Z2 }( K3 i8 E
dt = pendulum.parse('2021-05-21')
) X+ Q9 t" ]9 u; J
print(dt.day_of_week) # 5
; Y( I1 ~' k- z: {, J5 w$ u
, B0 S: q1 K8 k6 L- y8 V" E4 n" T& c
二十、从当前日期获取 7 天前的日期
3 |" P# f* ]7 M1 b9 v/ h# ]; v
from datetime import datetime, timedelta
9 a3 P* \3 Y ~4 _8 h, e$ D
/ S* B4 {2 {- |/ }
now = datetime.now()
( V) _7 t( A4 g) I
y3 a9 y9 r) F4 x. Z
for x in range(7):
9 u, J% D; x" x* L' L. J6 D
d = now - timedelta(days=x)
V3 y" G" _% w& _( z1 Y
print(d.strftime("%Y-%m-%d"))
3 }+ t% }; k; r7 h
0 E3 F h6 a, K& ~& Z
二十一、将两个日期时间对象之间的差值转换为秒
- E1 q/ j. y+ i6 L+ t( A* G
import datetime
' B }) Z5 q3 X
7 y U0 w5 A* H& a
time1 = datetime.datetime.strptime('19 01 2021', '%d %m %Y')
+ D' o6 ]" W2 q% _' A( q& f
time2 = datetime.datetime.strptime('25 01 2021', '%d %m %Y')
% B+ a- N |0 X# g" S: _
" e+ u1 Z! E% M
difference = time2 - time1
# V4 g ~1 l1 f S8 z% v
print(difference) # 6 days, 0:00:00
6 r. G* z4 W {0 U: J5 t3 O
+ G8 G( Q) o' q7 s; L& X6 ]; ^) Y
seconds = difference.total_seconds()
; R, q2 G+ w- Z
print(seconds) # 518400.0
" @0 g3 Y% }. y$ `" R( b2 w' r/ w
0 ^, f G' {: `
二十二、获得任何一个月的第N个星期五
. w5 u/ u- X6 C: F
import calendar
5 T1 g! E \; Y) Z. L
+ z+ g w; u7 k6 \3 Z
# 取2021年5月的第三个星期五
; x8 p4 A* s" E! @& G+ x! p& T
c = calendar.Calendar(firstweekday=calendar.SUNDAY)
( E m- R7 t1 X" K% h7 B8 S+ |' m2 n
year = 2021
5 U0 E2 i" }1 L3 |
month = 5
; f6 @ a$ e. ]9 {" A, A
n = 2 # 取第三个
@( R0 I9 d8 f( x% s
monthcal = c.monthdatescalendar(year, month)
! V, F' ~6 w' T5 I* l! _; U- B9 o
5 {! V2 W0 z( ^' r. K
try:
* g6 q' y4 s: I, `
third_friday = [
* M2 G3 M1 \/ ]" z' N1 K0 |' i2 I
day for week in monthcal
$ w( @( c- t4 t5 i2 p6 w
for day in week if
. ]: q( [8 L6 r
day.weekday() == calendar.FRIDAY and day.month == month
( ~7 ~9 y0 |2 f6 X* g
][n]
" r7 m" r) h$ b6 N* M
print(third_friday) # 2021-05-21
* J B6 {+ D; u$ i7 P, z9 V# O/ l r
except IndexError:
0 M8 [4 c1 r# W" w: y( t; z
print('No date found')
% |4 B* x- U$ l/ z
' M) j! O# }! i/ I
二十三、根据周数获取日期
e" H$ K/ E+ h# D' i6 p
import datetime
# Q; ]! p* c& W( D' Z8 u& a
from dateutil.relativedelta import relativedelta
; A* A' ^- w9 q
, ^( a3 }6 h2 W# b3 |
week = 25
( B: Y2 T$ P# M/ {8 O9 a5 R
year = 2021
4 A I1 V% y# n5 F. d9 L$ a- N$ X y
date = datetime.date(year, 1, 1) + relativedelta(weeks=+week)
& r! n- i! S' C/ y9 G9 M
print(date) # 2021-06-25
, T" k. r" K! W$ V3 j6 q
~6 h+ s8 p; b% c2 j: i0 \# |$ x
二十四、获取特定日期的工作日
' a& y# H6 ?" V, F9 f$ ?7 A
import datetime
/ u. s: m' @ @0 t
3 w, Z7 R2 I8 r0 t
print(datetime.date(2020, 5, 15).isocalendar()[2]) # 5
5 g: d. m; f7 X* E+ Z4 J
5 J3 \+ l9 C5 k3 x
二十五、创建一个 15 分钟前的 DateTime
; K* {, t5 m+ X( f- T+ g9 \
import datetime
( Q# B: E! b( A$ V3 n2 d$ ?
#Python小白学习交流群:153708845
, \# a$ I5 O# c2 ~# ?
dt = datetime.datetime.now() - datetime.timedelta(minutes=15)
]7 v( n3 H& m$ [
print(dt) # 2021-05-15 22:25:55.897365
) R. j7 V+ u. G+ G \
; s9 q- H3 g# K2 H6 ]' c+ A
二十六、从特定日期获取周的开始和结束日期
# c+ N) @1 \& ?" X% o5 ~) q
import pendulum
0 O9 f- ~4 T. _+ \. g9 \2 C$ E
1 ~+ ~' l; ]& s6 V; p
dt = pendulum.datetime(2012, 9, 5)
, K( w3 p i# f3 l# A' x9 C+ `
7 y( I! A. h, e( k, B
start = dt.start_of('week')
3 M& T* P: O. o/ f5 g! G
print(start.to_datetime_string()) # 2012-09-03 00:00:00
" S3 Z0 g; ^9 R( e$ F) f# A
/ }3 c+ G+ c- P4 f* |% k7 G* n" j
end = dt.end_of('week')
: T4 w D2 Q# ]: {* W- Y
print(end.to_datetime_string()) # 2012-09-09 23:59:59
' t+ p5 u$ q8 y8 |) |$ T+ I" K
1 S* E4 ^- p+ k5 d4 \9 U
二十七、两个日期之间的差异(以秒为单位)
' ~( j z2 S, {, z1 v: @) u
from datetime import datetime
% V$ s- P7 _ `6 g
#Python小白学习交流群:153708845
, J9 @) S. z; }3 ?* b. ~
fmt = '%Y-%m-%d %H:%M:%S'
% B! C4 P% D0 J3 `
d1 = datetime.strptime('2020-01-01 17:31:22', fmt)
5 V" D: {0 J* Z
d2 = datetime.strptime('2020-01-03 17:31:22', fmt)
6 A+ t+ D: K6 n( [. N( D% h
3 V% q; S: M2 ?/ T$ s% Q
days_diff = d2 - d1
$ U" F6 v* H& n& T& |+ \
print(days_diff.days * 24 * 60 * 60) # 172800
3 X; `$ _" s F, E. ^6 D
" u) n* G5 A H' I0 K. H
二十八、以这种格式获取昨天的日期MMDDYY
/ s7 B2 {" d0 S# `0 q# ]
from datetime import date, timedelta
* o e: ~8 W: n$ O5 m$ J
p( ?! B5 V9 L' l/ D, g
yesterday = date.today() - timedelta(days=1)
' M& _% Z# V. S! L
print(yesterday.strftime('%m%d%y')) # 051421
5 v, k- n% @+ ~
( o m6 j( u$ O6 t6 Y/ r
二十九、根据今天的日期获取上周三的日期
, X- M: `$ M. _8 i" @
from datetime import date
5 b; L9 V) \% l1 {* B5 a9 Z
from datetime import timedelta
. }: G- u5 p5 @1 \
7 k9 @) f2 f; I$ b
today = date.today()
~$ ]$ q K( g" r' C
1 R \, }9 b7 c" {
offset = (today.weekday() - 2) % 7
0 l& z; l3 S0 A- { s1 H+ h
wednesday = today - timedelta(days=offset)
# ~2 ?/ Q: u- B' e" g
print(wednesday) # 2021-05-12
' j8 A$ m% \2 }
0 W0 N& M% K) R* ?
三十、所有可用时区的列表打印
# y% ]$ X& p/ A* q
import pytz
0 k. R6 m, V! n+ I, |# d
; q: h; j# C9 A2 C% R
for i in pytz.all_timezones:
4 g( h- W- `9 d# ^0 B
print(i)
2 ^' a, b1 K. z1 t8 Q" _
8 I$ I0 i9 i4 a! c' _- E
" Q9 _. O5 \7 x/ T T% e& t
5 l( n* B* ?' ^& Y3 E7 A- u0 ~+ Z( h
欢迎光临 数学建模社区-数学中国 (http://www.madio.net/)
Powered by Discuz! X2.5