python实现时间戳和时间格式转换以及当前时间,特定时间的前后偏移

工作不忙的情况下,喜欢写一些代码,来锻炼自己的代码能力,哈哈哈哈哈哈哈

所以初步搞了一个针对时间转化的函数。逻辑是这个样子的

1、输入本次循环的次数

2、输入相应的操作:

  1. 如果什么都不输入,直接回车的情况下获取当前时间戳,时间字符串以及当天是本年第几天,第几周,星期几
  2. 如果输入1--将时间戳转换为字符串时间格式
  3. 如果输入2--将字符串时间格式转化为时间戳
  4. 如果输入3--获取当前时间的前后几天或者获取固定时间的前后几天或者几个小时/几分/几秒
    1. 当输入时间字符串时,就会返回针对该时间的偏移量
    2. 如果不输入,默认返回针对当前时间进行偏移
  5. 如果输入4--暂定循环

以下是具体代码:

import time,datetime
'''
输入相应的操作:请输入相应的时间节点,如果不输入,获取当前时间以及今天是当年的第几天,当年的第几周,星期几,'
                '1--将时间戳转换为字符串时间格式,'
                '2--将字符串时间格式转化为时间戳,'
                '3--获取当前时间的前后几天或者获取固定时间的前后几天或者几个小时
                '4--结束循环
'''

def Times_Now():
    '''请输入相应的时间节点,如果不输入,获取当前时间'''
    T = time.time()
    timeArray = time.localtime(T)
    otherStyleTime = time.strftime("%Y/%m/%d %H:%M:%S", timeArray)
    week_now = time.strftime("今天是当年第%j天-当年第%U周-星期%w")
    data_dict = {
        "当前时间戳":T,
        "当前保留整数时间戳":int(T),
        "当前时间":otherStyleTime,
        "当前天数/周/星期":week_now,
    }

    print(data_dict)


def Timestamp_str(timestamp):
    '''1--将时间戳转换为字符串时间格式'''
    time_array = time.localtime(int(timestamp))
    format_string = "%Y-%m-%d %H:%M:%S"
    str_date = time.strftime(format_string, time_array)
    print(str_date)


def Str_Timestamp(times_str):
    '''2--将字符串时间格式转化为时间戳'''
    format_string = "%Y-%m-%d %H:%M:%S"
    time_array = time.strptime(times_str, format_string)
    time_stamp = int(time.mktime(time_array))
    print(time_stamp)


def Before_After(num,except_time = None):
    '''获取当前时间的前后几天或者获取固定时间的前后几天或者几个小时'''
    if except_time:
        #偏移量
        dt = datetime.datetime.strptime(except_time, "%Y-%m-%d %H:%M:%S")
        offset_days = datetime.timedelta(days=num)
        offset_weeks = datetime.timedelta(weeks=num)
        offset_hours = datetime.timedelta(hours=num)
        offset_minutes = datetime.timedelta(minutes=num)
        offset_seconds = datetime.timedelta(seconds=num)
        data_dict= {
            "日期%s前%s天"%(except_time,num):(dt - offset_days).strftime("%Y-%m-%d %H:%M:%S"),
            "日期%s后%s天"%(except_time,num):(dt + offset_days).strftime("%Y-%m-%d %H:%M:%S"),
            "日期%s前%s周"%(except_time,num):(dt - offset_weeks).strftime("%Y-%m-%d %H:%M:%S"),
            "日期%s后%s周"%(except_time,num):(dt + offset_weeks).strftime("%Y-%m-%d %H:%M:%S"),
            "日期%s前%s小时"%(except_time,num):(dt - offset_hours).strftime("%Y-%m-%d %H:%M:%S"),
            "日期%s后%s小时"%(except_time,num):(dt + offset_hours).strftime("%Y-%m-%d %H:%M:%S"),
            "日期%s前%s分钟"%(except_time,num):(dt - offset_minutes).strftime("%Y-%m-%d %H:%M:%S"),
            "日期%s后%s分钟"%(except_time,num):(dt + offset_minutes).strftime("%Y-%m-%d %H:%M:%S"),
            "日期%s前%s秒"%(except_time,num):(dt - offset_seconds).strftime("%Y-%m-%d %H:%M:%S"),
            "日期%s后%s秒"%(except_time,num):(dt + offset_seconds).strftime("%Y-%m-%d %H:%M:%S"),
        }
        print(data_dict)

    else:
        week_before = (datetime.datetime.now() - datetime.timedelta(weeks=num)).strftime("%Y-%m-%d %H:%M:%S")
        week_after = (datetime.datetime.now() + datetime.timedelta(weeks=num)).strftime("%Y-%m-%d %H:%M:%S")
        day_before = (datetime.datetime.now() - datetime.timedelta(days=num)).strftime("%Y-%m-%d %H:%M:%S")
        day_after = (datetime.datetime.now() + datetime.timedelta(days=num)).strftime("%Y-%m-%d %H:%M:%S")
        houre_before = (datetime.datetime.now() - datetime.timedelta(hours=num)).strftime("%Y-%m-%d %H:%M:%S")
        houre_after = (datetime.datetime.now() + datetime.timedelta(hours=num)).strftime("%Y-%m-%d %H:%M:%S")
        minute_before = (datetime.datetime.now() - datetime.timedelta(minutes=num)).strftime("%Y-%m-%d %H:%M:%S")
        minute_after = (datetime.datetime.now() + datetime.timedelta(minutes=num)).strftime("%Y-%m-%d %H:%M:%S")
        s_before = (datetime.datetime.now() - datetime.timedelta(seconds=num)).strftime("%Y-%m-%d %H:%M:%S")
        s_after = (datetime.datetime.now() + datetime.timedelta(seconds=num)).strftime("%Y-%m-%d %H:%M:%S")
        data_dict= {
            '当前时间%s周前' % num : week_before,
            '当前时间%s周后' % num : week_after,
            '当前时间%s天前' % num : day_before,
            '当前时间%s天后' % num : day_after,
            '当前时间%s小时前' % num : houre_before,
            '当前时间%s小时后' % num : houre_after,
            '当前时间%s分钟前' % num : minute_before,
            '当前时间%s分钟后' % num :  minute_after,
            '当前时间%s秒前' % num:  s_before,
            '当前时间 % s秒后' % num :  s_after,
        }

        print(data_dict)

def zong(n):
    #n为循环次数
    i = 0
    while i < n:
        operation = input('输入相应的操作:请输入相应的时间节点,如果不输入直接回车,获取当前时间,'
                    '1--将时间戳转换为字符串时间格式,'
                    '2--将字符串时间格式转化为时间戳,'
                    '3--获取当前时间的前后几天或者获取固定时间的前后几天或者几个小时'
                    '4--暂定循环')
        if operation == '1':
            timestamp = input('请输入需要转换的时间戳')
            Timestamp_str(timestamp)
        elif operation == '2':
            times = input('请输入需要转化为时间戳的时间格式:2019-02-11 13:27:16')
            Str_Timestamp(times)
        elif operation == '3':
            num = input('请输入时间偏移量')
            k = input('请输入期望时间:默认格式2019-02-11 13:27:16,默认为当前时间,直接回车')
            Before_After(int(num), k)
        elif operation == '4':
            print('----已暂停----')
            break
        else:
            Times_Now()
    i += 1



if __name__ == '__main__':
    n = input('请输入希望循环的次数')
    zong(int(n))

返回的结果是:

/Users/dongyue/Desktop/code/venv/bin/python /Users/dongyue/Desktop/code/learn/时间转换小工具.py
请输入希望循环的次数5
输入相应的操作:请输入相应的时间节点,如果不输入直接回车,获取当前时间,1--将时间戳转换为字符串时间格式,2--将字符串时间格式转化为时间戳,3--获取当前时间的前后几天或者获取固定时间的前后几天或者几个小时4--暂定循环
{'当前时间戳': 1577433619.6698182, '当前保留整数时间戳': 1577433619, '当前时间': '2019/12/27 16:00:19', '当前天数/周/星期': '今天是当年第361天-当年第51周-星期5'}

输入相应的操作:请输入相应的时间节点,如果不输入直接回车,获取当前时间,1--将时间戳转换为字符串时间格式,2--将字符串时间格式转化为时间戳,3--获取当前时间的前后几天或者获取固定时间的前后几天或者几个小时4--暂定循环1
请输入需要转换的时间戳1577432627
2019-12-27 15:43:47

输入相应的操作:请输入相应的时间节点,如果不输入直接回车,获取当前时间,1--将时间戳转换为字符串时间格式,2--将字符串时间格式转化为时间戳,3--获取当前时间的前后几天或者获取固定时间的前后几天或者几个小时4--暂定循环2
请输入需要转化为时间戳的时间格式:2019-02-11 13:27:162019-12-27 15:43:47
1577432627

输入相应的操作:请输入相应的时间节点,如果不输入直接回车,获取当前时间,1--将时间戳转换为字符串时间格式,2--将字符串时间格式转化为时间戳,3--获取当前时间的前后几天或者获取固定时间的前后几天或者几个小时4--暂定循环3
请输入时间偏移量3
请输入期望时间:默认格式2019-02-11 13:27:16,默认为当前时间,直接回车
{'当前时间3周前': '2019-12-06 16:01:05', '当前时间3周后': '2020-01-17 16:01:05', '当前时间3天前': '2019-12-24 16:01:05', '当前时间3天后': '2019-12-30 16:01:05', '当前时间3小时前': '2019-12-27 13:01:05', '当前时间3小时后': '2019-12-27 19:01:05', '当前时间3分钟前': '2019-12-27 15:58:05', '当前时间3分钟后': '2019-12-27 16:04:05', '当前时间3秒前': '2019-12-27 16:01:02', '当前时间 3秒后': '2019-12-27 16:01:08'}

输入相应的操作:请输入相应的时间节点,如果不输入直接回车,获取当前时间,1--将时间戳转换为字符串时间格式,2--将字符串时间格式转化为时间戳,3--获取当前时间的前后几天或者获取固定时间的前后几天或者几个小时4--暂定循环3
请输入时间偏移量3
请输入期望时间:默认格式2019-02-11 13:27:16,默认为当前时间,直接回车2019-12-27 15:43:47
{'日期2019-12-27 15:43:47前3天': '2019-12-24 15:43:47', '日期2019-12-27 15:43:47后3天': '2019-12-30 15:43:47', '日期2019-12-27 15:43:47前3周': '2019-12-06 15:43:47', '日期2019-12-27 15:43:47后3周': '2020-01-17 15:43:47', '日期2019-12-27 15:43:47前3小时': '2019-12-27 12:43:47', '日期2019-12-27 15:43:47后3小时': '2019-12-27 18:43:47', '日期2019-12-27 15:43:47前3分钟': '2019-12-27 15:40:47', '日期2019-12-27 15:43:47后3分钟': '2019-12-27 15:46:47', '日期2019-12-27 15:43:47前3秒': '2019-12-27 15:43:44', '日期2019-12-27 15:43:47后3秒': '2019-12-27 15:43:50'}

输入相应的操作:请输入相应的时间节点,如果不输入直接回车,获取当前时间,1--将时间戳转换为字符串时间格式,2--将字符串时间格式转化为时间戳,3--获取当前时间的前后几天或者获取固定时间的前后几天或者几个小时4--暂定循环4
----已暂停----

Process finished with exit code 0

不过目前还没有进行容错,后期再优化吧!

猜你喜欢

转载自blog.csdn.net/Mojitoice/article/details/103733645