字符串转成时间戳

强烈推荐:

1、日期字串转为时间戳int:https://www.cnblogs.com/andy9468/p/12627534.html

2、时间戳转为日期字串:https://www.cnblogs.com/andy9468/p/12627597.html

3、比较2个时刻日期字串的时间差:https://www.cnblogs.com/andy9468/p/12627663.html

4、比较2个时刻日期字串的时间差:距离现在的时间距离(不同时间格式)https://www.cnblogs.com/andy9468/p/12627927.html

5、python获取一年所有的日期: https://www.cnblogs.com/andy9468/p/10710142.html

6、获取本周所有的日期:https://www.cnblogs.com/andy9468/p/16266748.html

=====================================================================

 时间、时区 转换的基础方法的说明和封装:

'''

一、计算基准:8时区 的 秒级 obj
1、0时区转8时区:
obj + timedelta(hours=8)
2、8时区转0时区:
obj - timedelta(hours=8)

obj8 = chg0_to_obj8(obj0)
obj0 = chg8_to_obj0(obj8)

二、其他转换为obj
1、str 转 obj:
DT_FORMAT = "%Y-%m-%dT%H:%M:%S"
datetime.strptime("2025-05-30T14:55:26", DT_FORMAT)
		2025-05-30T14:55:26Z
		2025-05-30T14:55:26
		2025-05-30 14:55:26
2、int 转 obj
datetime.fromtimestamp(1749017269)

3、timestamp  =  obj

obj = timechg_str2obj(s, format="%Y-%m-%dT%H:%M:%S")
obj = timechg_int2obj(i)

三、obj转其他
1、obj 转 str
obj.strftime("%Y-%m-%dT%H:%M:%S")
2、obj 转 int
int(obj.timestamp())
3、timestamp  =  obj

str = timechg_obj2str(obj, format="%Y-%m-%dT%H:%M:%S")
int = timechg_obj2int(obj)

'''

from datetime import datetime, timedelta


def chg0_to_obj8(obj0):
    obj8 = obj0 + timedelta(hours=8)
    return obj8


def chg8_to_obj0(obj8):
    obj0 = obj8 - timedelta(hours=8)
    return obj0


def timechg_str2obj(s, format="%Y-%m-%dT%H:%M:%S"):
    obj = datetime.strptime(s, format)
    return obj


def timechg_int2obj(i):
    obj = datetime.fromtimestamp(i)
    return obj


def timechg_obj2str(obj, format="%Y-%m-%dT%H:%M:%S"):
    s = obj.strftime(format)
    return s


def timechg_obj2int(obj):
    i = int(obj.timestamp())
    return i


if __name__ == '__main__':
    s = "2025-05-30T14:55:26"
    obj = timechg_str2obj(s)
    print(obj)
    obj0 = chg8_to_obj0(obj)
    print(obj0)
    obj8 = chg0_to_obj8(obj0)
    print(obj8)
    i = timechg_obj2int(obj)
    print(i)
    s = timechg_obj2str(obj, format="%Y-%m-%dT%H:%M:%SZ")
    print(s)
    pass

# 输出
# 2025-05-30 14:55:26
# 2025-05-30 06:55:26
# 2025-05-30 14:55:26
# 1748588126
# 2025-05-30T14:55:26Z

  

(一)通用:time包

1、日期字符串 => 时间戳int

import time

# 将时间字符串转为时间戳int
dt = "2016-05-05 20:28:54"
# 转换成时间数组
timeArray = time.strptime(dt, "%Y-%m-%d %H:%M:%S")
# 转换成时间戳
timestamp = time.mktime(timeArray)

print(timeArray)
print("时间戳-timestamp: %s" % timestamp)

  

封装好的函数1:日期 转为 时间戳。单位s,秒。

def datestr2timeint(date_str='2016-05-05 20:28:54', format='%Y-%m-%d %H:%M:%S'):
    '''
    日期字符串 转为 时间戳。精确到s,单位秒。
    输入举例说明:
    ('2016-05-05 20:28:54')
    ('2016-05-05 20:28:54','%Y-%m-%d %H:%M:%S')
    ('20160505 20:28:54','%Y%m%d %H:%M:%S')
    ('20160505 20_28_54','%Y%m%d %H_%M_%S')
    ('20160505','%Y%m%d')
    :param date_str:日期字符串
    :param format:输入日期字串的日期格式、样式
    :return:转换为int的时间戳
    '''
    # 将时间字符串转为时间戳int
    dt = date_str
    # 转换成时间数组
    timeArray = time.strptime(dt, format)
    # 转换成时间戳
    timestamp = int(time.mktime(timeArray))

    return timestamp

  

2、时间戳 => 日期字符串

date_time_str = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(int(time.time())))
print(date_time_str)

(1)精确到秒s

import time

# 将时间戳int转为时间字符串
timestamp = 1462451334
# 转换成localtime
time_local = time.localtime(timestamp)
# 转换成新的时间格式(2016-05-05 20:28:54)
dt = time.strftime("%Y-%m-%d %H:%M:%S", time_local)
print(dt)
print("日期字符-dt: %s" % dt)

 封装好的函数2.1:时间戳 转为 日期字符串。单位s,秒。

def timestamp2date(timestamp=1565673941, format="%Y-%m-%d %H:%M:%S"):
    '''
    时间戳转为日期字串,单位s,秒
    :param timestamp:时间戳
    :return:日期字串
    输出举例说明:
    (1565673941, "%Y-%m-%d %H:%M:%S")  输出  2019-08-13 13:25:41
    (1565673941, "%Y-%m-%d")  输出  2019-08-13
    (1565673941, "%Y%m%d")  输出  20190813
    '''
    local_time = time.localtime(timestamp)
    data_head = time.strftime(format, local_time)

    return data_head

%w 星期(0-6),星期天为星期的开始

https://blog.csdn.net/weixin_28455801/article/details/112954902

 

(2)精确到毫秒ms 

import time

ct = time.time()
# ct = 1536994867.9991837
print(ct)
print(int(ct))
local_time = time.localtime(ct)
data_head = time.strftime("%Y-%m-%d %H:%M:%S", local_time)
data_secs = (ct - int(ct)) * 1000
dt_ms = "%s.%03d" % (data_head, data_secs)
print(dt_ms)

  封装好的函数2.2:时间戳 转为 日期字串。单位ms,毫秒。

def timestamp2datems(timestamp):
    '''
    时间戳转为日期字串,精确到ms。单位s
    :param timestamp:时间戳
    :return:日期字串
    '''
    local_time = time.localtime(timestamp)
    data_head = time.strftime("%Y-%m-%d %H:%M:%S", local_time)
    data_secs = (timestamp - int(timestamp)) * 1000
    dt_ms = "%s.%03d" % (data_head, data_secs)
    # print(dt_ms)
    return dt_ms

  

 

3、获取当前时间的时间戳

time.time()

  

 (二)其他:datetime包

1. 日期输出格式化 datetime => string

import datetime
now = datetime.datetime.now()
now.strftime('%Y-%m-%d %H:%M:%S')

strftime是datetime类的实例方法(即为实例方法)。

 

2. 日期输出格式化 string => datetime

import datetime
t_str = '2015-04-07 19:11:21'
d = datetime.datetime.strptime(t_str, '%Y-%m-%d %H:%M:%S')

 strptime是datetime类的静态方法。

 

3.任意格式时间字符串转成时间戳

import datetime
GMT_FORMAT = '%a, %d %b %Y %H:%M:%S GMT'
TIME = 'Thu, 19 Feb 2009 16:00:07 GMT'
timestamp = datetime.datetime.strptime(TIME, GMT_FORMAT)
print(timestamp)

 

4. 获取时间对象

from datetime import datetime, timedelta

# 一、获取时间对象
# 带微秒的时间对象
t1 = datetime.now()
# datetime.datetime(2025, 10, 15, 2, 40, 38, 114874)

# 不带微秒的时间对象
t2 = datetime.now().replace(microsecond=0)
# datetime.datetime(2025, 10, 15, 2, 40, 38)

# 二、获取之前的时间对象
# 获取 8h前的时间对象
t_hours_ago = datetime.now().replace(microsecond=0) - timedelta(hours=8)
# 获取 10天前的时间对象
t_days_ago = datetime.now().replace(microsecond=0) - timedelta(days=10)
# 获取 1月前的时间对象
t_months_ago = datetime.now().replace(microsecond=0) - timedelta(days=30)
# 获取 1年前的时间对象
t_years_ago = datetime.now().replace(microsecond=0) - timedelta(days=365)

#  直接构造时间对象。依次是:年月日 时分秒
datetime(2025, 8, 5, 8, 14, 12)

  

  

(三)日期字串转换时间戳,日期字串秒数差值

import time


def datestr2timeint(date_str='2016-05-05 20:28:54', format='%Y-%m-%d %H:%M:%S'):
    '''
    日期字符串 转为 时间戳。精确到s,单位秒。
    输入举例说明:
    ('2016-05-05 20:28:54')
    ('2016-05-05 20:28:54','%Y-%m-%d %H:%M:%S')
    ('20160505 20:28:54','%Y%m%d %H:%M:%S')
    ('20160505 20_28_54','%Y%m%d %H_%M_%S')
    ('20160505','%Y%m%d')
    :param date_str:日期字符串
    :param format:输入日期字串的日期格式、样式
    :return:转换为int的时间戳
    '''
    # 将时间字符串转为时间戳int
    dt = date_str
    # 转换成时间数组
    timeArray = time.strptime(dt, format)
    # 转换成时间戳
    timestamp = int(time.mktime(timeArray))

    return timestamp


def time_str_minus_seconds(old_date, now_date):
    '''
    :param old_date: 过去日期字串
    :param now_date: 现在日期字串
    :return: 时间差值,秒
    '''
    stamp_ago = datestr2timeint(old_date)
    stamp_now = datestr2timeint(now_date)
    minus_seconds = stamp_now - stamp_ago
    # 返回差的秒数
    return minus_seconds


if __name__ == '__main__':
    time_str1 = "2019-08-12 13:25:41"
    time_str2 = "2019-08-13 13:25:41"
    print(datestr2timeint(time_str1))
    print(datestr2timeint(time_str2))
    print(time_str_minus_seconds(time_str1, time_str2))

  

posted @ 2017-12-06 13:38  安迪9468  阅读(2172)  评论(0)    收藏  举报