Python 字符串时间转换time或者datetime时间戳

本文介绍Python中使用time和datetime模块进行时间字符串与时间戳互相转换的方法,并演示了如何计算时间差及实现日期分段。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#时间字符串 --> 时间戳

  • time 模块
timestring='2018-06-26 10:14:49'
# 字符串时间转为时间戳
def Changetime(str1):
    Unixtime = int(time.mktime(time.strptime(str1, '%Y-%m-%d %H:%M:%S'))*1000)
    return Unixtime
t1 = time.strptime(str1, '%Y-%m-%d %H:%M:%S') #将字符串转存成时间元组
t2 = Changetime(timestring)  #1529979289000
  • time.mktime() 与 time.localtime() 互为还原函数。

  • time.mktime(timetuple) :将时间元组转换成时间戳

  • time.localtime([timestamp]):将时间戳转会为时间元组

    注意:datetime 模块没有能获取时间戳的函数

#时间戳 --> 时间字符串

  • time模块
timestamp = time.time()  #1530098655.6190026
timestruct = time.localtime(timestamp)
t3 = time.strftime('%Y-%m-%d %H:%M:%S', timestruct) #'2018-06-27 19:24:15'
  • datetime 模块
import datetime
timestamp = 1530098655.6190026
datetime_struct = datetime.datetime.fromtimestamp(timestamp)
t4 = datetime_struct.strftime('%Y-%m-%d %H:%M:%S')  #'2018-06-27 19:24:15'
datetime_struct = datetime.datetime.utcfromtimestamp(timestamp) 
t5 = datetime_struct.strftime('%Y-%m-%d %H:%M:%S')  #'2018-06-27 11:24:15'
  • fromtimestamp(timestamp[, tz]):将时间戳转为当地的时间元组
  • utcfromtimestamp(timestamp):将时间戳转为UTC的时间元组。以北京为例:utc时间比北京当地时间少8个小时。
    ###注意:time 和 datetime 之间可以用时间戳来相互转换。
    #时间差计算
  • datetime
#几天/周前
import datetime
import time
now = datetime.datetime.now()
three_days_ago = now + datetime.timedelta(days=-3)
three_weeks_ago = now + datetime.timedelta(weeks=-3)
#几天/周后
three_days_later = now + datetime.timedelta(days=3)
three_weeks_later = now + datetime.timedelta(weeks=3)
#获取时间差
start = datetime.datetime.now()
time.sleep(30)
end = datetime.datetime.now()
print (end-start).days # 0 天数
print (end-start).total_seconds() # 30.029522 精确秒数
print (end-start).seconds # 30 秒数
print (end-start).microseconds # 29522 毫秒数

注意:没有months和years

注意:获取的时间差没有分钟

#任意时间字符串转换时间对象
dateutil 与日期相关库里的一个日期解析器 能够将字符串 转换为日期格式

import time
from dateutil import parser
time_string = time.ctime() # 'Wed Jun 27 19:40:17 2018' 可以是任意的时间格式 <type str> 
datetime_struct = parser.parse(time_string)
print type(datetime_struct) # <type 'datetime.datetime'>
print datetime_struct.strftime('%Y-%m-%d %H:%M:%S') # 2018-06-27 19:40:17

天级别分段

def split_date_ranges(start_date,end_date,time_interval):

    data_ranges = []
    d1 = datetime.datetime.strptime(start_date, '%Y-%m-%d')
    d2 = datetime.datetime.strptime(end_date, '%Y-%m-%d')
    print((d2 - d1).days)
    count_day= (d2 - d1).days +1
    if count_day // time_interval ==0:
        data_ranges.append([start_date,end_date])
    else:
        for item in range(1,math.ceil(count_day/time_interval)+1):
            s_date = datetime.datetime.strptime(str(start_date), '%Y-%m-%d').date()
            f_date = datetime.datetime.strptime(str(s_date), '%Y-%m-%d').date() + datetime.timedelta(time_interval-1)
            start_date = datetime.datetime.strptime(str(f_date), '%Y-%m-%d').date() + datetime.timedelta(1)

            if ((datetime.datetime.strptime(str(f_date), '%Y-%m-%d')  - d2).days > 0 ) and ((datetime.datetime.strptime(str(s_date), '%Y-%m-%d')  - d2).days > 0 ):
                continue
            elif ((datetime.datetime.strptime(str(f_date), '%Y-%m-%d')  - d2).days > 0 ) and ((datetime.datetime.strptime(str(s_date), '%Y-%m-%d')  - d2).days <= 0 ) :
                f_date = end_date
            data_ranges.append([str(s_date), str(f_date)])
    print(data_ranges)

    return data_ranges


在这里插入图片描述

#参考文献
时间戳参考文献
python 第三方库 dateutil.parser 使用说明

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

piepis

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值