Files
controller-wisetopdataserver/python/biopro/util/datetime.py
T
2021-12-20 14:52:55 +08:00

71 lines
1.5 KiB
Python

from datetime import datetime
from .sys import system_sudo, CalledProcessError
__all__ = ['str_datetime', 'datetime_str', 'set_datetime']
def str_datetime(expr: str) -> datetime:
"""
:param expr: format datetime(yyyy,mm,dd,HH,MM,SS)
:return:
"""
if not (expr.startswith('datetime(') and expr.endswith(')')):
raise ValueError('illegal datetime format : ' + expr)
c = datetime.now()
p = expr[9:-1].split(',')
y = c.year
m = c.month
d = c.day
H = c.hour
M = c.minute
S = c.second
if len(p) > 0 and len(p[0]) > 0:
y = int(p[0])
if y < 2000:
y += 2000
if len(p) > 1 and len(p[1]) > 0:
m = int(p[1])
if len(p) > 2 and len(p[2]) > 0:
d = int(p[2])
if len(p) > 3 and len(p[3]) > 0:
H = int(p[3])
if len(p) > 4 and len(p[4]) > 0:
M = int(p[4])
if len(p) > 5 and len(p[5]) > 0:
S = int(p[5])
if len(p) > 6:
raise ValueError('illegal datetime format : ' + expr)
# check valid datetime
return datetime(y, m, d, H, M, S)
def datetime_str(d: datetime = None) -> str:
if d is None:
d = datetime.now()
return 'datetime(%d,%d,%d,%d,%d,%d)' % (d.year, d.month, d.day, d.hour, d.minute, d.second)
def set_datetime(d: datetime):
"""set system datetime.
:param d:
:return:
"""
try:
system_sudo('date', '-s', '%d/%d/%d %d:%d:%d' % (d.year, d.month, d.day, d.hour, d.minute, d.second))
except CalledProcessError:
pass