python 时间日期函数

常用的日期处理

import datetime


class DateTimeHelper(object):

    format_d = ['%Y', '%m', '%d']
    format_t = ['%H', '%M', '%S']

    @classmethod
    def gen_str_format(cls, is_second=False, d_split="-", t_split=":"):
        """
        :param is_second: 是否显示秒数
        :param d_split:   日期分隔符
        :param t_split:   时间分隔符
        """
        first = '%s'.join(cls.format_d) % d_split
        format_t = cls.format_t if is_second else cls.format_t[0:2]
        second = '%s'.join(format_t) % t_split

        return "%s  %s" % (first, second)

    @classmethod
    def current_now(cls, zone=None):
        if zone == 'utc':
            return datetime.datetime.utcnow()
        return datetime.datetime.now()

    @classmethod
    def utc_to_current(cls, val):
        """
        把utc时间转换程当前时间
        """
        pass

    @classmethod
    def timedelta_to_seconds(cls, t1, t2, _format=None):
        """
        2个时间差转换成秒
        _format: t1,t2 为str时的,格式
        """
        if not _format:
            _format = cls.gen_str_format()     # '%Y-%m-%d %H:%M'

        if not isinstance(t1, str):
            t1 = datetime.datetime.strptime(t1, _format)
        if not isinstance(t2, str):
            t2 = datetime.datetime.strptime(t1, _format)
        differ = t1 - t2
        return differ.total_seconds()

    @classmethod
    def datetime_to_str(cls, val, _format=None):
        if not _format:
            _format = cls.gen_str_format()

        if isinstance(val, str):
            return val
        return datetime.datetime.strftime(val, _format)

    @classmethod
    def str_to_datetime(cls, val, _format=None):
        """
        日期字符串转换成datetime.datetime
        :param val: 
        :param _format: 
        """
        if not _format:
            _format = cls.gen_str_format()
        return datetime.datetime.strptime(val, _format)

    @classmethod
    def timestamp_to_datetime(cls, val, seconds=True, zone=None):
        """
        时间戳转时间
        :param val: 注意val的单位 前端返回的是一毫秒为单位,后端是以秒为单位
        :param seconds: True 以秒为单位
        :param zone: 返回utc时间还是本地时间
        """
        if not isinstance(val, (int, float)):
            val = int(val)

        if not seconds:
            val = val/1000

        if zone == 'utc':
            return datetime.datetime.utcfromtimestamp(val)
        return datetime.datetime.fromtimestamp(val)

    @classmethod
    def datetime_to_timestamp(cls, val):
        """
        时间转时间戳
        :param val: 
        """
        if isinstance(val, str):
            val = cls.str_to_datetime(val)
        return datetime.datetime.timestamp(val)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值