lqshow
10/14/2017 - 7:28 AM

python arrow - 处理时间和日期

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import arrow
import datetime


# date time utils
def getdaterange(startdate, enddate):
    dates = []
    startdate = datetime.date(*[int(i) for i in startdate.split('-')])
    enddate = datetime.date(*[int(i) for i in enddate.split('-')])
    dates.append(str(startdate))
    while startdate < enddate:
        startdate = startdate + datetime.timedelta(days=1)
        dates.append(str(startdate))
    return dates


def beforeday(n):
    """
    更改时间日期
    :param n:
    :return:
    """
    now = arrow.utcnow().to('local')
    return now.replace(days=n).format('YYYY-MM-DD')


def today():
    """
    获取当天日期
    :return:
    """
    return beforeday(0)


def yesterday():
    """
    获取昨天日期
    :return:
    """
    return beforeday(-1)


def tomorrow():
    """
    获取明天日期
    :return:
    """
    return beforeday(1)


def lastweeks(n=1):
    """
    获取前N周的日期
    :param n:
    :return:
    """
    return getdaterange(beforeday(-1 * n * 7), yesterday())


def lastdays(n=1):
    """
    获取前n天的日期
    :param n:
    :return:
    """
    return getdaterange(beforeday(-1 * n), yesterday())

安装Arrow

pip install arrow

使用Arrow

import arrow

获取当前时间

# 默认的now()便会以系统时区作为arrow对象的时区,同时是本地时间格式
now = arrow.now()

result: <Arrow [2017-10-14T15:54:40.511430+08:00]>

获得UTC时间

utc = arrow.utcnow()

result: <Arrow [2017-10-14T07:57:14.499582+00:00]>

时区转换

local = arrow.utcnow().to('local')
local = arrow.utcnow().to('Asia/Shanghai')

result: <Arrow [2017-10-14T15:59:20.391247+08:00]>

获取时间戳

timestamp = local.timestamp

result: 1507967960

将日期转换为arrow对象

arrow.get('2016-07-05 21:03:44', 'YYYY-MM-DD HH:mm:ss')

result: <Arrow [2016-07-05T21:03:44+00:00]>

将指定时间戳获取arrow对象

arrow.get(1507967960)
arrow.get('1507967960')

result: <Arrow [2017-10-14T07:59:20+00:00]>

其他获取arrow对象的方式

arrow.get(2017,10,14)
arrow.get(2017,10,14,20)
arrow.get(2017,10,14,20,30)
arrow.get(2017,10,14,20,30,59)

arrow.Arrow(2017,10,14)

调整日期

yesterday = local.replace(days=-1)

result: <Arrow [2017-10-13T15:59:20.391247+08:00]>

人性化humanize

local.humanize()
result: u'5 minutes ago'

local.humanize(locale=zh_CN')
result: u'5\u5206\u949f\u524d'

格式化

local.format()
result: u'2017-10-14 15:59:20+08:00'

local.format('YYYY-MM-DD HH:mm:ss')
result: u'2017-10-14 15:59:20'

Reference