我们会经常遇到对时间的处理,用python来进行时间处理简直不要太方便了,这一期就给大家介绍一下python的时间处理!

用python进行时间处理主要会用到time,calendar,datetime及pandas这几个库,其中又以后两个最为常用。

这一期我们主要介绍一下用datetime库进行时间处理的常用操作。

1. datetime基础

1.1 获取当前时间

import time

import datetime as dtm

## 用datetime获取当前时间

dtime = dtm.datetime.now() # dtm.datetime.utcnow()

dtime

# datetime.datetime(2018, 12, 15, 13, 1, 30, 200649) # 年、月、日、时、分、秒、微秒

dtime.year, dtime.month, dtime.day

# (2018, 12, 15)

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

# '2018-12-15 20:47:45'

# 用time库获取当前时间:

time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time( )))

# '2018-12-15 20:49:17'

time.strftime("%Y-%m-%d %H:%M:%S")

# '2018-12-15 20:50:11'

1.2 datetime基本操作

from datetime import datetime, date, time

# Using datetime.combine()

d = date(2005, 7, 14)

t = time(12, 30)

datetime.combine(d, t)

datetime(2005, 7, 14, 12, 30)

# datetime 类的方法:

datetime.date()

datetime.time()

# 可以用str()直接将时间格式转化为字符串

dt = datetime(2005, 7, 14, 12, 30)

# datetime(%Y,%m,%d,%H,%M,%S):

# datetime共有6个参数,分别代表的是年月日时分秒。其中年月日是必须要传入的参数,时分秒可以不传入,默认全为零。

# >>> # Using datetime.timetuple() to get tuple of all attributes

tt = dt.timetuple()

for it in tt:

print(it)

# 2005 # year

# 7 # month

# 14 # day

# 12 # hour

# 30 # minute

# 0 # second

# 3 # weekday (0 = Monday, 6 = Sunday)

# 195 # number of days since 1st January

# -1 # dst - method tzinfo.dst() returned None

####################################################

# 返回今天是周几

x='2018-05-27'

int(dtm.datetime(int(x[ :4]),int(x[5:7]),int(x[8: ])).strftime('%w'))

# 0 表示周日

dtm.datetime(2017, 1, 1).strftime("%w") # 0-6 SUN-SAT

2. 时间戳的转换

Unix时间戳: Unix 中常常使用一个数字记录时间,表示距离起始时间相差的秒数(根据系统的精度,时间单位有时毫秒,有时是纳秒)。大于 0 表示在起始时间之后,小于 0 就表示在起始时间之前。这个数字有时是浮点类型、有时是整数类型,但都称这个数字为 Unix 时间戳(Timestamp)

import time

import datetime as dtm

## 获取当前时间

dtime = dtm.datetime.now() # dtm.datetime.utcnow()

# 时间戳

ans_time = int(time.mktime(dtime.timetuple()))

ans_time

# 1535860540

# 时间戳的转换-1

t1 = datetime.datetime.fromtimestamp(ans_time) # local time

t1

# datetime.datetime(2018, 9, 2, 11, 55, 40)

# 也可以用time模块的localtime()方法: time.localtime(ans_time)

# 时间戳的转换-2

t2 = datetime.datetime.utcfromtimestamp(ans_time) # utc time

t2

# datetime.datetime(2018, 9, 2, 3, 55, 40)

t2.strftime("%Y--%m--%d %H:%M:%S")

# 2018--09--02 03:55:40

# 时间戳的转换-3

pd.to_datetime(ans_time,unit='s') # utc time

# Timestamp('2018-09-02 03:55:40')

3. 时间格式的转换

strftime 即 string format time,用来将时间格式化成字符串

strptime 即 string parse time,用来将字符串解析成时间

import datetime as dtm

start = dtm.datetime(2011,1,7,1,21,1)

# datetime.datetime(2011, 1, 7, 1, 21, 1)

start.strftime('%Y-%m-%d %H:%M:%S')

# '2011-01-07 01:21:01'

dtm.datetime.strptime('2011-01-07 01:21:01','%Y-%m-%d %H:%M:%S')

# datetime.datetime(2011, 1, 7, 1, 21, 1)

str(start)

# '2011-01-07 01:21:01'

start.strftime("%Y-%m-%d 00:00:00")

# '2011-01-07 00:00:00'

# The strftime method formats a datetime as a string:

In [1]: dt.strftime('%m/%d/%Y %H:%M')

Out[1]: '10/29/2011 20:30'

# Strings can be converted (parsed) into datetime objects using the strptime function:

In [2]: dtm.datetime.strptime('20091031', '%Y%m%d')

Out[2]: datetime.datetime(2009, 10, 31, 0, 0)

>>> z

dtm.datetime(2012, 9, 23, 21, 37, 4, 177393)

>>> nice_z = dtm.datetime.strftime(z, '%A %B %d, %Y')

>>> nice_z

'Sunday September 23, 2012'

# 字符串形式的时间格式转化为时间格式

dt = dtm.datetime.strptime("21/11/06 16:30", "%d/%m/%y %H:%M")

# 时间格式转化为字符串

# time.strftime( '%Y-%m-%d' , time.localtime(time.time()))

# >>> # Formatting datetime

print(dt.strftime("%A, %d. %B %Y %I:%M%p"))

# 'Tuesday, 21. November 2006 04:30PM'

'The {1} is {0:%d}, the {2} is {0:%B}, the {3} is {0:%I:%M%p}.'.format(dt, "day", "month", "time")

# 'The day is 21, the month is November, the time is 04:30PM.'

'''

Datetime format specification:

%Y Four-digit year

%y Two-digit year

%m Two-digit month [01, 12]

%d Two-digit day [01, 31]

%H Hour (24-hour clock) [00, 23]

%I Hour (12-hour clock) [01, 12]

%M Two-digit minute [00, 59]

%S Second [00, 61] (seconds 60, 61 account for leap seconds)

%w Weekday as integer [0 (Sunday), 6]

datetime.strptime解析时间需要输入相应的时间格式,而dateutil第三方库中的parser.parse方法则更加灵活。

dateutil.parser 有时候也会有一定的麻烦,比如 '42'会被解析为2042 年加上今天的日期:datetime.datetime(2042, 9, 1, 0, 0)

from dateutil.parser import parse

parse('2011-01-03') # datetime.datetime(2011, 1, 3, 0, 0)

parse('Jan 31, 1997 10:45 PM') # datetime.datetime(1997, 1, 31, 22, 45)

parse('6/12/2011', dayfirst=True) # datetime.datetime(2011, 12, 6, 0, 0)

# pandas:

datestrs = ['2011-07-06 12:00:00', '2011-08-06 00:00:00']

pd.to_datetime(datestrs)

# DatetimeIndex(['2011-07-06 12:00:00', '2011-08-06 00:00:00'], dtype='datetime64[ns]', freq=None)

4. Timedelta

timedelta 可以表示两个时间之间的时间差:

dtm.timedelta(days=0, seconds=0, microseconds=0, milliseconds=0, minutes=0, hours=0, weeks=0)

t1 = dtm.datetime(2018,7,12,15,6,9)

t2 = dtm.datetime(2018,9,11,12,33,23)

td = t2-t1

td

# datetime.timedelta(60, 77234)

td.days,td.seconds

# (60, 77234)

# 将timedelta转换为: day, hour, minute

def parse_timedelta(td):

"""

transform timedelta to day, hour, minute

"""

return td.days, td.seconds//3600, (td.seconds//60)%60

parse_timedelta(td)

# (60, 21, 27)

利用timedelta进行时间外推:

import datetime as dtm

# 100天前的日期

(dtm.datetime.now() - dtm.timedelta(days = 100)).strftime("%Y-%m-%d")

def TaftD(FORMAT_DATE,i):

"""

返回几天后的时间

"""

return (dtm.datetime.strptime(FORMAT_DATE, '%Y-%m-%d') + dtm.timedelta(days = i)).strftime('%Y-%m-%d')

def TaftH(FORMAT_TIME,i):

"""

返回几小时后的时间

"""

return (dtm.datetime.strptime(FORMAT_TIME, '%Y-%m-%d %H:%M:%S') + dtm.timedelta(hours = i)).strftime('%Y-%m-%d %H:%M:%S')

TaftD("2018-05-17", -2)

# '2018-05-15'

TaftH("2018-05-17 10:40:00", 2)

# '2018-05-17 12:40:00'

这一期主要介绍了是datetime进行时间处理的一些常用操作,后续我们会介绍pandas中的一些时间处理的操作。欢迎点赞转发期待哦~

以上就是Python如何进行时间处理的详细内容,更多关于Python时间处理的资料请关注脚本之家其它相关文章!

python对外发布的时间_Python如何进行时间处理相关推荐

  1. python日期时间_python日期和时间的操作方法汇总

    日期和时间可以说是一种独特的数据类型,既不同于数字,也不同于字符串,而且有自己独特的运算规则.在不同的编程语言中,都会将日期和时间与常规的数据类型独立开来,单独进行操作.在python的内置模块中,时 ...

  2. python日期和时间_Python日期和时间

    datetime是Python处理日期和时间的标准库. 获取当前日期和时间 我们先看如何获取当前日期和时间: 1 2 3 4 5 6>>>from datetime import d ...

  3. python获取网络时间_python获取网络时间和本地时间

    今天我们来看一下如何用python获取网络时间和本地时间,直接上代码吧,代码中都有注释. python获取网络时间获取网络时间 def getBeijinTime(): ""&qu ...

  4. python打包发布到手机_Python打包操作与在线发布

    打包操作: 1.安装打包工具 2.在包文件中,添加构建模块 setup.py 在构建模块中,添加项目描述信息 from distutils.core import setup setup( name= ...

  5. python 自动记录时间_python自动化之时间

    cxz##############################现在时间######################### import time time.time() ############# ...

  6. python如何显示时间_python显示当前时间

    Python中怎么显示当前时间 用Python3编写一个程序显示当前北京时间,要CSS布局HTML小编今天和大家分享显示格式如下: 当前时间import timeprint(time.strftime ...

  7. python日期格式化到毫秒_Python简单格式化时间的方法【strftime函数】 python 格式化日期到毫秒...

    python3使用opencv的VideoCapture读取视频文件遇到Python 3.5.3 (v3.5.3:1880cb95a742, Jan 16 2017, 16:02:32) [MSC v ...

  8. python时间戳转换成时间_Python 时间戳/字符串/时间 转换

    概要 平时对于时间的处理经常使用python的time和datetime模块,但是用来多次还是对其中的时间戳,字符串和时间转换应用的不太熟练,时间长了不使用就理不清楚,为此整理成文. 视图 时间戳,时 ...

  9. python datetime 加一个月_Python 如何计算当前时间减少或增加一个月

    问题 今天在之前的代码中发现了一个bug,有个计算当前时间减少一个月的函数,其报出下面的异常信息: ValueError: day is out of range for month 看一下代码: i ...

最新文章

  1. oracle数据库备份恢复篇(一)
  2. Angular的Zone-Evergreen在SAP Spartacus中的应用
  3. bind php,PHP – bind_result到数组
  4. SQL 查询--日期条件(今日、昨日、本周、本月。。。) (转)
  5. centos7 修改为任意网卡名_VirtualBox虚拟机双网卡配置实现与本机互通并上网
  6. java面试题_208道Java面试题,
  7. Part One 基本数据类型
  8. 计算机管理创建新用户,win7系统添加新用户名的方法和win7系统计算机管理中没有本地用户和组的解决方法...
  9. alter table *** add constraint *** 用法---约束
  10. mysql执行SQL脚本
  11. python制作adobe photoshop插件_Adobe Ps 2021已上线,新功能秒杀一切插件
  12. FreeSWITCH学习
  13. 送给我那八年同校的你
  14. 车辆违章查询接口文档
  15. 初学博科YIGO2.0学习心得--下推
  16. 怎样参与火箭计划币_从目的到计划不是火箭科学
  17. NIKE的网络营销案例给我们的启发
  18. 用代码生成炫酷的词云图—《你好,李焕英》
  19. 【Win10】我们无法更新系统保留的分区
  20. BGP路由策略与策略路由

热门文章

  1. Spring 捕捉校验参数异常并统一处理
  2. Springboot 抛出Failed to determine a suitable driver class异常原因
  3. SpringBoot Mybatis解决使用PageHelper一对多分页问题
  4. “xxxx“.zip:这个压缩文件格式未知或者数据已经被损坏,打不开压缩文件,总出现这个提示的解决方法
  5. 【Sublime Text3】Package Control:Install Package不能使用解决方法
  6. Android 软键盘弹出时把布局顶上去,控件乱套解决方法
  7. Can’t connect to local MySQL server through socket的解决方法
  8. mysql导出长数字到excel避免显示为科学记数法 解决方法
  9. PHP如何防止XSS攻击
  10. Oracle Study之--Oracle等待事件(2)