python的时间处理模块

原文链接: https://blog.csdn.net/gty931008/article/details/80254806

“时间”经常会被处理,用的不会会比较复杂,以前主要用time模块,现在感觉datetime更好用,记录下常用的功能

datetime模块包含

datetime模块定义了以下几个类:

python的时间处理模块_第1张图片
基本上使用datetime模块就足够了。

python的时间处理模块_第2张图片

例1:时间戳与format时间相互准换

1. 通过datetime转换

from datetime import datetime
import time

time1 = "2019-01-01 21:08:01"
# 转为时间戳time.mktime只能转换struct_time 
In [137]: # 通过datetime转换

In [138]: datetime.strptime(time1,"%Y-%m-%d %H:%M:%S").timetuple()
Out[138]: time.struct_time(tm_year=2019, tm_mon=1, tm_mday=1, tm_hour=21, tm_min=8, tm_sec=1, tm_wday=1, tm_yday=1, tm_isdst=-1)

In [139]: time.mktime(datetime.strptime(time1,"%Y-%m-%d %H:%M:%S").timetuple())
Out[139]: 1546348081.0

In [140]: # 通过time转换 import time

In [141]: time.strptime(time1, "%Y-%m-%d %H:%M:%S")
Out[141]: time.struct_time(tm_year=2019, tm_mon=1, tm_mday=1, tm_hour=21, tm_min=8, tm_sec=1, tm_wday=1, tm_yday=1, tm_isdst=-1)

注: 上面的struct_time中的 tm_wday 从0开始计数的

    2. 将时间戳格式化 (没找到datetime的方式)

In [170]: import time

In [171]: time.localtime(time.time())
Out[171]: time.struct_time(tm_year=2019, tm_mon=8, tm_mday=7, tm_hour=19, tm_min=35, tm_sec=56, tm_wday=2, tm_yday=219, tm_isdst=0)


In [173]: time.strftime("%Y-%m-%d", time.localtime(time.time()))
Out[173]: '2019-08-07'

  ps:  datetime的使用

In [180]: datetime.now()
Out[180]: datetime.datetime(2019, 8, 7, 19, 40, 55, 623142)

In [187]: datetime.strftime( datetime.now(), "%Y-%m")
Out[187]: '2019-08'

综上:

        1. time的strftime、strptime是将struct_time格式转化  

        2. datetime的strftime、strptime是将datetime格式转化  # datetime.datetime(2019, 8, 7, 19, 40, 55, 623142)

        3. strptime和strftime都要写入 - 参数:"%Y-%m-%d",不同的是strptime的参数要严格按照输入的形式,例如这样就不行datetime.strptime("2018-09", "%Y");strftime只要输出你想要内容

        4. datetime的 参数:"%Y-%m-%d" 写在后面,time则一前一后

 

例2

数据迁移由于数据量大,需要分天或者分小时处理,需要使用datetime.timedelta()


In [199]: from datetime import datetime; from datetime import timedelta

In [201]: datetime.strftime(datetime.now(),"%Y-%m-%d")
Out[201]: '2019-08-07'

In [202]: stime = datetime.strftime(datetime.now(),"%Y-%m-%d")

In [203]: stime
Out[203]: '2019-08-07'

In [204]: etime = datetime.strftime(datetime.now() - timedelta(3),"%Y-%m-%d")
# 这是3天一同步,还可以减去小时,分钟,秒数进行同步 timedelta(hours=1,seconds=2,minutes=3)

In [205]: etime
Out[205]: '2019-08-04'

# sql = "select * from table where dt >='{}' and dt <'{}'".format(stime,etime)

 

你可能感兴趣的:(python学习笔记)