bugfix
This commit is contained in:
parent
24e9571ed4
commit
3ff92f63a0
@ -1,12 +1,12 @@
|
|||||||
import os,sys
|
import os,sys
|
||||||
import time
|
import time
|
||||||
import datetime
|
from datetime import date, timedelta, datetime
|
||||||
|
|
||||||
leapMonthDays = [0,31,29,31,30,31,30,31,31,30,31,30,31]
|
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]
|
unleapMonthDays = [0,31,28,31,30,31,30,31,31,30,31,30,31]
|
||||||
|
|
||||||
def curDatetime():
|
def curDatetime():
|
||||||
return datetime.datetime.now()
|
return datetime.now()
|
||||||
|
|
||||||
def curDateString():
|
def curDateString():
|
||||||
d = curDatetime()
|
d = curDatetime()
|
||||||
@ -27,7 +27,7 @@ def timestampstr():
|
|||||||
d.microsecond/1000)
|
d.microsecond/1000)
|
||||||
|
|
||||||
def isMonthLastDay(d):
|
def isMonthLastDay(d):
|
||||||
dd = datetime.timedelta(1)
|
dd = timedelta(1)
|
||||||
d1 = d + dd
|
d1 = d + dd
|
||||||
if d1.month != d.month:
|
if d1.month != d.month:
|
||||||
return True
|
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)))
|
return int(time.mktime((dt.year,dt.month,dt.day,dt.hour,dt.minute,dt.second,0,0,0)))
|
||||||
|
|
||||||
def addSeconds(dt,s):
|
def addSeconds(dt,s):
|
||||||
ndt = dt + datetime.timedelta(0,s)
|
ndt = dt + timedelta(0,s)
|
||||||
return ndt
|
return ndt
|
||||||
|
|
||||||
def monthMaxDay(y,m):
|
def monthMaxDay(y,m):
|
||||||
@ -74,7 +74,7 @@ def str2Date(dstr):
|
|||||||
return None
|
return None
|
||||||
|
|
||||||
def ymdDate(y,m,d,H=0,M=0,S=0):
|
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):
|
def str2Datetime(dstr):
|
||||||
x = dstr.split(' ')
|
x = dstr.split(' ')
|
||||||
@ -84,7 +84,7 @@ def str2Datetime(dstr):
|
|||||||
t = x[1]
|
t = x[1]
|
||||||
y,m,d = d.split('-')
|
y,m,d = d.split('-')
|
||||||
H,M,S = t.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):
|
def strdate_add(date_str, days=0, months=0, years=0):
|
||||||
dt = str2Datetime(date_str)
|
dt = str2Datetime(date_str)
|
||||||
@ -116,7 +116,7 @@ def addYears(dt,years):
|
|||||||
|
|
||||||
def dateAdd(dt,days=0,months=0,years=0):
|
def dateAdd(dt,days=0,months=0,years=0):
|
||||||
if days != 0:
|
if days != 0:
|
||||||
dd = datetime.timedelta(days)
|
dd = timedelta(days)
|
||||||
dt = dt + dd
|
dt = dt + dd
|
||||||
if months != 0:
|
if months != 0:
|
||||||
dt = addMonths(dt,months)
|
dt = addMonths(dt,months)
|
||||||
@ -127,7 +127,7 @@ def dateAdd(dt,days=0,months=0,years=0):
|
|||||||
def firstSunday(dt):
|
def firstSunday(dt):
|
||||||
f = dt.weekday()
|
f = dt.weekday()
|
||||||
if f<6:
|
if f<6:
|
||||||
return dt + datetime.timedelta(7 - f)
|
return dt + timedelta(7 - f)
|
||||||
return dt
|
return dt
|
||||||
|
|
||||||
DTFORMAT = '%Y%m%d %H%M%S'
|
DTFORMAT = '%Y%m%d %H%M%S'
|
||||||
@ -166,10 +166,10 @@ def timestampSub(ts1,ts2) :
|
|||||||
return int(ret)
|
return int(ret)
|
||||||
|
|
||||||
def timestamp2dt(t):
|
def timestamp2dt(t):
|
||||||
return datetime.datetime.fromtimestamp(t)
|
return datetime.fromtimestamp(t)
|
||||||
|
|
||||||
def date_weekinyear(date_str):
|
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
|
return date_str[:5] + w
|
||||||
|
|
||||||
def date_season(date_str):
|
def date_season(date_str):
|
||||||
@ -191,3 +191,55 @@ def date_season(date_str):
|
|||||||
s = sl.get(m)
|
s = sl.get(m)
|
||||||
return date_str[:5] + s
|
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
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user