python:我写了一个类似js库moment库

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()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值