master
yumoqing 2023-06-16 11:52:07 +08:00
parent 24e9571ed4
commit 3ff92f63a0
1 changed files with 62 additions and 10 deletions

View File

@ -1,12 +1,12 @@
import os,sys
import time
import datetime
from datetime import date, timedelta, datetime
leapMonthDays = [0,31,29,31,30,31,30,31,31,30,31,30,31]
unleapMonthDays = [0,31,28,31,30,31,30,31,31,30,31,30,31]
def curDatetime():
return datetime.datetime.now()
return datetime.now()
def curDateString():
d = curDatetime()
@ -27,7 +27,7 @@ def timestampstr():
d.microsecond/1000)
def isMonthLastDay(d):
dd = datetime.timedelta(1)
dd = timedelta(1)
d1 = d + dd
if d1.month != d.month:
return True
@ -45,7 +45,7 @@ def timeStampSecond(dt):
return int(time.mktime((dt.year,dt.month,dt.day,dt.hour,dt.minute,dt.second,0,0,0)))
def addSeconds(dt,s):
ndt = dt + datetime.timedelta(0,s)
ndt = dt + timedelta(0,s)
return ndt
def monthMaxDay(y,m):
@ -74,7 +74,7 @@ def str2Date(dstr):
return None
def ymdDate(y,m,d,H=0,M=0,S=0):
return datetime.datetime(y,m,d,H,M,S)
return datetime(y,m,d,H,M,S)
def str2Datetime(dstr):
x = dstr.split(' ')
@ -84,7 +84,7 @@ def str2Datetime(dstr):
t = x[1]
y,m,d = d.split('-')
H,M,S = t.split(':')
return datetime.datetime(int(y),int(m),int(d),int(H),int(M),int(S))
return datetime(int(y),int(m),int(d),int(H),int(M),int(S))
def strdate_add(date_str, days=0, months=0, years=0):
dt = str2Datetime(date_str)
@ -116,7 +116,7 @@ def addYears(dt,years):
def dateAdd(dt,days=0,months=0,years=0):
if days != 0:
dd = datetime.timedelta(days)
dd = timedelta(days)
dt = dt + dd
if months != 0:
dt = addMonths(dt,months)
@ -127,7 +127,7 @@ def dateAdd(dt,days=0,months=0,years=0):
def firstSunday(dt):
f = dt.weekday()
if f<6:
return dt + datetime.timedelta(7 - f)
return dt + timedelta(7 - f)
return dt
DTFORMAT = '%Y%m%d %H%M%S'
@ -166,10 +166,10 @@ def timestampSub(ts1,ts2) :
return int(ret)
def timestamp2dt(t):
return datetime.datetime.fromtimestamp(t)
return datetime.fromtimestamp(t)
def date_weekinyear(date_str):
w = datetime.datetime.strptime(date_str, '%Y-%m-%d').strftime('%W')
w = datetime.strptime(date_str, '%Y-%m-%d').strftime('%W')
return date_str[:5] + w
def date_season(date_str):
@ -191,3 +191,55 @@ def date_season(date_str):
s = sl.get(m)
return date_str[:5] + s
"""
Patterns =
'D'
'W[0-6]'
'M[00-31]'
'S[0-2]-[00-31]'
'Y[01-12]-[00-31]'
}
"""
def str2date(sd):
a = [ int(i) for i in sd.split('-') ]
return date(*a)
def is_monthend(dt):
if isinstance(dt, str):
dt = str2date(dt)
nxt_day = dt + timedelta(days=1)
if dt.month != nxt_day.month:
return True
return False
def is_match_pattern(pattern, strdate):
if pattern == 'D':
return True
dt = str2date(strdate)
if pattern.startswith('W'):
w = (int(pattern[1]) + 6) % 7
if dt.weekday() == w:
return True
return False
if pattern.startswith('M'):
day = int(pattern[1:])
if day == 0 and is_monthend(dt):
return True
if day == dt.day:
return True
return False
if pattern.startswith('S'):
m,d = [ int(i) for i in pattern[1:].split('-') ]
print(f'{m=}-{d=}, {dt.month=} {dt.day}')
m %= 4
if m == dt.month % 4 and d == dt.day:
return True
return False
if pattern.startswith('Y'):
m,d = [ int(i) for i in pattern[1:].split('-') ]
print(f'{m=}-{d=}, {dt.month=} {dt.day}')
if m == dt.month and d == dt.day:
return True
return False