Python时间处理详解:时间戳、当前时间与格式化操作
本文详细介绍Python中时间处理的核心操作,涵盖时间戳定义与计算、当前时间获取、时间差运算及文件时间戳提取。重点解析time与datetime模块用法,提供完整的时间日期格式化符号对照表,并通过代码示例演示时间加减、格式化转换及常用工具推荐,帮助开发者高效掌握Python时间编程技巧。
本文通过具体实例介绍Python中的时间处理相关操作,供读者参考学习。
文章主要内容涵盖以下部分:
1. 时间戳概念 2. 获取当前时间 3. 计算时间差 4. Python时间日期格式化符号详解 5. 综合应用示例
一、时间戳基础
时间戳是指自 1970 年 1 月 1 日 08:00:00 GMT 起至当前时刻的总秒数,通常被称为 Unix 时间戳(Unix Timestamp)。该概念在 Unix 系统及 C 语言环境中广泛应用。时间戳通常以浮点数形式呈现,小数部分表示毫秒。通过两个时间戳相减,可计算时间间隔,单位为秒。
具体示例如下:
import time time1 = time.time() time.sleep(15) time2 = time.time() print time2 - time1
其中, 为休眠函数,其参数单位为秒。
二、获取当前时间
>>> import datetime,time
>>> now = time.strftime("%Y-%m-%d %H:%M:%S")
>>> print now
2016-04-30 17:02:26
>>> now = datetime.datetime.now()
>>> print now
三、计算时间差
#1 获取昨天 00:00 至昨天 23:59 的时间范围
>>> import datetime
>>> yestoday = datetime.datetime.now() - datetime.timedelta(days=1)
>>> t1 = "%s-00-00-00" % yestoday.strftime("%Y-%m-%d")
>>> t2 = "%s-23-59-59" % yestoday.strftime("%Y-%m-%d")
>>> print 't1', t1
t1 2016-04-29-00-00-00
>>> print 't2', t2
t2 2016-04-29-23-59-59
#2 计算当前时间往后推 10 小时的时间点
>>> d1 = datetime.datetime.now() >>> d3 = d1 + datetime.timedelta(hours=10) >>> d3.ctime() 'Sun May 1 03:09:58 2
#3 获取时间差的秒数与微秒数(注意:此处分别取秒和微秒部分,并非进行等价单位换算)
>>> import datetime >>> starttime = datetime.datetime.now() >>> endtime = datetime.datetime.now() >>> starttime = datetime.datetime.now() >>> endtime = datetime.datetime.now() >>> print endtime - starttime 0:00:07.390988 >>> print (endtime - starttime).seconds 7 >>> print (endtime - starttime).microseconds 390988
文件的时间戳信息
>>> import os >>> statinfo=os.stat(r"C:/1.txt") >>> statinfo (33206, 0L, 0, 0, 0, 0, 29L, 1201865413, 1201867904, 1201865413)
注意:调用 返回的 对象中,后三项分别对应文件的访问时间(st_atime)、修改时间(st_mtime)和创建时间(st_ctime)。例如,获取文件修改时间的代码如下:
>>> statinfo.st_mtime 1201865413.8952832
注意:上述结果为 Linux 格式的时间戳,可转换为更易读的日期格式:
>>> import time >>> time.localtime(statinfo.st_ctime) (2008, 2, 1, 19, 30, 13, 4, 32, 0)
例如,时间戳 对应的时间为 2008年2月1日 19时30分13秒(格式为 2008-2-1 19:30:13)。
四、Python 时间日期格式化符号
%y 两位数的年份表示(00-99) %Y 四位数的年份表示(000-9999) %m 月份(01-12) %d 月内中的一天(0-31) %H 24小时制小时数(0-23) %I 12小时制小时数(01-12) %M 分钟数(00-59) %S 秒(00-59) %a 本地简化星期名称 %A 本地完整星期名称 %b 本地简化的月份名称 %B 本地完整的月份名称 %c 本地相应的日期表示和时间表示 %j 年内的一天(001-366) %p 本地 A.M.或P.M.的等价符 %U 一年中的星期数(00-53),星期天为星期的开始 %w 星期(0-6),星期天为星期的开始 %W 一年中的星期数(00-53),星期一为星期的开始 %x 本地相应的日期表示 %X 本地相应的时间表示 %Z 当前时区的名称 %% %号本身
五、综合示例
#! coding:utf-8
''''' 日期相关的操作 '''
from datetime import datetime
from datetime import timedelta
import calendar
DATE_FMT = '%Y-%m-%d'
DATETIME_FMT = '%Y-%m-%d %H:%M:%S'
DATE_US_FMT = '%d/%m/%Y'
'''''
格式化常用的几个参数
Y : 1999
y :99
m : mouth 02 12
M : minute 00-59
S : second
d : day
H : hour
'''
def dateToStr(date):
'''''把datetime类型的时间格式化自己想要的格式'''
return datetime.strftime(date, DATETIME_FMT)
def strToDate(strdate):
'''''把str变成日期用来做一些操作'''
return datetime.strptime(strdate, DATETIME_FMT)
def timeElement():
'''''获取一个时间对象的各个元素'''
now = datetime.today()
print 'year: %s month: %s day: %s' %(now.year, now.month, now.day)
print 'hour: %s minute: %s second: %s' %(now.hour, now.minute, now.second)
print 'weekday: %s ' %(now.weekday()+1) #一周是从0开始的
def timeAdd():
'''''
时间的加减,前一天后一天等操作
datetime.timedelta([days[, seconds[, microseconds[, milliseconds[, minutes[, hours[, weeks]]]]]]])
参数可以是正数也可以是负数
得到的对象可以加也可以减 乘以数字和求绝对值
'''
atime = timedelta(days=-1)
now = datetime.strptime('2001-01-30 11:01:02', DATETIME_FMT)
print now + atime
print now - abs(atime)
print now - abs(atime)*31
def lastFirday():
today = datetime.today()
targetDay = calendar.FRIDAY
thisDay = today.weekday()
de = (thisDay - targetDay) % 7
res = today - timedelta(days=de)
print res
def test():
print dateToStr(datetime.today())
print strToDate('2013-01-31 12:00:01')
timeElement()
timeAdd()
lastFirday()
if __name__=='__main__':
test()
运行结果如下:
Connected to pydev debugger (build 141.1899) 2016-05-18 10:40:26 2013-01-31 12:00:01 year: 2016 month: 5 day: 18 hour: 10 minute: 41 second: 13 weekday: 3 2001-01-29 11:01:02 2001-01-29 11:01:02 2000-12-30 11:01:02 2016-05-13 10:41:37.001000
补充说明:本站还提供了几款实用的 Unix 时间戳转换及日期在线工具,供读者参考使用:
Unix时间戳(timestamp)转换工具: http://tools.jb51.net/code/unixtime
在线日期/天数计算器: http://tools.jb51.net/jisuanqi/date_jisuanqi
在线万年历日历: http://tools.jb51.net/bianmin/wannianli
在线阴历/阳历转换工具: http://tools.jb51.net/bianmin/yinli2yangli
更多关于 Python 相关内容感兴趣的读者可查看本站专题:《Python日期与时间操作技巧总结》、《Python数据结构与算法教程》、《Python Socket编程技巧总结》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》及《Python文件与目录操作技巧汇总》。
希望本文所述的 Python 时间处理内容对大家的学习有所帮助。
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









