majianyu
11/3/2017 - 3:47 AM

time_python

# -*- coding:utf-8 -*-
import time,datetime

def str2date(d:str):
    # 字符串格式化为日期
    return datetime.datetime.strptime(d,"%Y-%m-%d")


def stamp2str(stamp: int) -> str:
    """
    将时间戳转化为日期并格式化
    :param stamp:时间戳 str
    :return: date str
    """
    try:
        second = stamp / 1000
        result = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(second))
        return result
    except Exception as e:
        return str(e)


def second2time(second: int) -> str:
    """
    将 second 转换为时间字符串
    :param second: 120
    :return: "00:02:00"
    """
    m, s = divmod(second, 60)
    h, m = divmod(m, 60)
    return "{:02d}:{:02d}:{:02d}".format(h, m, s)


def time2second(t: str) -> int:
    """
    将时间字符串转换为 second
    :param t: "00:02:00"
    :return: 120
    """
    h, m, s = t.split(":")
    return int(h) * 3600 + int(m) * 60 + int(s)


def str2stamp(s: str) -> int:
    """
    将字符串时间转换为 timestamp
    :param s: "20180101 10:00:00"
    :return: 1514772000
    """
    time_array = time.strptime(s, "%Y%m%d %H:%M:%S")
    return time.mktime(time_array)

def get_duration_days(days:int,day=None):
    """
    将字符串时间转换为 timestamp
    :param days: 天数
    :param day: 基准日期
    :return: 1514772000
    """
    if day is None:
        day = datetime.date.today()
    else:
        day = datetime.datetime.strptime(day.replace("-",""),"%Y%m%d")
    day = datetime.date.strftime(day + datetime.timedelta(days=days), '%Y%m%d')
    return day
    
def date_range(start: str, days: int) -> pd.DataFrame:
    """
    生成时间填充序列
    :param start: 开始日期 
    :param days: 天数
    :return: 
    """
    index = pd.date_range(start, periods=days, freq="D")
    return pd.DataFrame({"some": list(range(len(index)))}, index=index)