py其实有这个库可以下,但是我发现
1、里面可用的方法很少,而且打包exe后运行会导致报错
2、不是很习惯,毕竟我是习惯写js
库源码:
from datetime import datetime, date, timedelta
class moment():
def __init__(self, datestr: str = None):
if datestr is None:
self.date = datetime.now()
else:
self.date = datetime.strptime(datestr, '%Y-%m-%d %H:%M:%S')
def format(self, fmt: str = '%Y-%m-%d %H:%M:%S'):
return self.date.strftime(fmt)
def add(self, days: int = 0, hours: int = 0, minutes: int = 0, seconds: int = 0):
self.date = self.date + timedelta(days=days, hours=hours, minutes=minutes, seconds=seconds)
return self
def subtract(self, days: int = 0, hours: int = 0, minutes: int = 0, seconds: int = 0):
self.date = self.date - timedelta(days=days, hours=hours, minutes=minutes, seconds=seconds)
return self
def diff(self, datestr: str = None, unit: str = 'seconds'):
if datestr is None:
datestr = self.format('%Y-%m-%d %H:%M:%S')
else:
datestr = datestr
if unit == 'seconds':
return int((datetime.strptime(datestr, '%Y-%m-%d %H:%M:%S') - self.date).total_seconds())
elif unit == 'minutes':
return int((datetime.strptime(datestr, '%Y-%m-%d %H:%M:%S') - self.date).total_seconds() / 60)
elif unit == 'hours':
return int((datetime.strptime(datestr, '%Y-%m-%d %H:%M:%S') - self.date).total_seconds() / 3600)
elif unit == 'days':
return int((datetime.strptime(datestr, '%Y-%m-%d %H:%M:%S') - self.date).total_seconds() / 86400)
else:
return None
def isSame(self, datestr: str = None):
if datestr is None:
datestr = self.format('%Y-%m-%d %H:%M:%S')
else:
datestr = datestr
return self.date == datetime.strptime(datestr, '%Y-%m-%d %H:%M:%S')
def isAfter(self, datestr: str = None):
if datestr is None:
datestr = self.format('%Y-%m-%d %H:%M:%S')
else:
datestr = datestr
return self.date > datetime.strptime(datestr, '%Y-%m-%d %H:%M:%S')
def isBefore(self, datestr: str = None):
if datestr is None:
datestr = self.format('%Y-%m-%d %H:%M:%S')
else:
datestr = datestr
return self.date < datetime.strptime(datestr, '%Y-%m-%d %H:%M:%S')
def unix(self):
return int(self.date.timestamp())
使用案例:
from momentjs import moment
// 时间格式化
startTime = moment().format("%Y-%m-%d %H:%M:%S") // 2024-11-29 10:50:11
endTime = moment("2024-11-28 10:50:11").format("%Y-%m-%d %H:%M:%S") // 2024-11-28 10:50:11
endTime = moment("2024-11-28 10:50:11").format("%Y-%m-%d 00:00:00") // 2024-11-28 00:00:00
// 时间相差多少,目前只写到天时分秒
moment(endTime).diff(startTime, "days") // 相差多少天
// 时间戳
moment("2024-11-28 10:50:11").unix()