python-关于时间操作的总结

最近测试了一个接口,各种换算时间,把时间相关的操作查了一遍。。总结下

1.因为本机时间是北京时间,Jenkins上的时间是utc格林威治时间会少8h,所以从时间戳转化成时间time.localtime()会根据具体的本地时间转换,产生不一致,所以指定具体时区可以避免这个问题

根据时间戳转换时间

reset_time = 1552406400

reset_time = datetime.datetime.fromtimestamp(reset_time, pytz.timezone('Asia/Shanghai'))

 

2.没有时区不一致的问题时,将时间戳转换为具体格式的时间

active_time = 1552406400

active_time = time.strftime('%Y-%m-%d', time.localtime(active_time))

可以输出:

'2019-03-13'

 

3.将timestamp-->datetime.datetime 格式-->str类型

reset_time = datetime.datetime.fromtimestamp(reset_time, pytz.timezone('Asia/Shanghai')).strftime('%Y-%m-%d')

另外:将时间相关的操作简单封装了下,仅供参考

#获取本月第一天日期和本月最后一天日期
def get_current_month_start_and_end():
    """
    年份 date(2017-09-08格式)
    :param date:
    :return:本月第一天日期和本月最后一天日期
    """
    #获取今天的日期
    date = time.strftime('%Y-%m-%d',time.localtime(time.time()))
    print(date)
    if date.count('-') != 2:
        raise ValueError('- is error')
    year, month = str(date).split('-')[0], str(date).split('-')[1]
    end = calendar.monthrange(int(year), int(month))[1]
    start_date = '%s-%s-01' % (year, month)
    end_date = '%s-%s-%s' % (year, month, end)
    return start_date, end_date

#将时间减1天
def date_to_yesterday(date):
    if isinstance(date,str):
        if "-" not in date:
            date = date[:4]+"-"+date[4:6]+"-"+date[-2:]
        #将str转换为datetime类型
        date = datetime.datetime.strptime(date, '%Y-%m-%d')
    delta = datetime.timedelta(days=-1)
    yesterday = date + delta
    return yesterday

#将时间加1天
def date_to_tomorrow(date):
    if isinstance(date,str):
        if "-" not in date:
            date = date[:4]+"-"+date[4:6]+"-"+date[-2:]
        #将str转换为datetime类型
        date = datetime.datetime.strptime(date, '%Y-%m-%d')
    delta = datetime.timedelta(days=1)
    tomorrow = date + delta
    return tomorrow

#将字符串转换成日期类型
def string_toDatetime(string):
    return time.strptime(string, "%Y-%m-%d")

#将日期转换本月最后一天
def date_month_lastday(date):
    if isinstance(date,str):
        date = datetime.datetime.strptime(date, '%Y-%m-%d')
    last_day = datetime.date(date.year, date.month+1, 1) - datetime.timedelta(1)
    return last_day

#将日期转换本月第一天
def date_month_firstday(date):
    if isinstance(date,str):
        date = datetime.datetime.strptime(date, '%Y-%m-%d')
    first_day = datetime.date(date.year, date.month, 1)
    return first_day

#获取今天的日期
def get_today():
    return time.strftime("%Y%m%d")

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值