=Start=
缘由:
工作中经常会碰到用Python解析日志的情况。比较常见的就是解析syslog产生的日志:需要解析字符串获知日志产生的时间。用到的地方挺多的,值得记录一下。
参考解答:
%a 英文星期的简写,例如:Wed %A 英文星期的完整拼写,例如:Wednesday %b 英文月份的简写,例如:Jun %B 英文月份的完整拼写,例如:June %Y 年份的完整拼写,例如:「2016」 %m 月份(用两位表示) (01..12) %d (月份中的)几号(用两位表示) (01..31) %H 小时(按 24 小时制显示,用两位表示) (00..23) %I 小时(按 12 小时制显示,用两位表示) (01..12) %M 分钟数(用两位表示) (00..59) %S 秒数(用两位表示)(00..60) %j 本年从第1天开始计数到当天的天数 %w 星期数,0-6之间(0是周日) %W 当天属于本年的第几周,周一作为一周的第一天进行计算 %x 按照 (mm/dd/yy) 格式显示当前日期 %X 按照 (%H:%M:%S) 格式显示当前时间,例如:「22:45:03」 %s 从 1970年1月1日0点0分0秒到现在历经的秒数 (GNU扩充)
实际使用样例:
"""XXXX Jun 19 22:45:03 XXXX""" from datetime import datetime month = "Jun" day = "19" time = "22:45:03" str_time = str(datetime.strptime(month+day.zfill(2)+time+str(datetime.now().year), "%b%d%X%Y")) print str_time # 2016-06-19 22:45:03
&
from datetime import datetime print datetime.now().strftime('%Y-%b-%d %H:%M:%S') # 2016-Jun-22 19:34:36 print datetime.now().strftime('%Y-%B-%d %H:%M:%S') # 2016-June-22 19:35:28 print datetime.now() # 2016-06-22 19:36:33.832560
&
import time time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(1347517370)) time.strftime('%Y-%m-%d %H:%M:%S', time.gmtime(1346114717972/1000.)) #或 from datetime import datetime >>> ts_epoch = 1362301382 >>> ts = datetime.fromtimestamp(ts_epoch).strftime('%Y-%m-%d %H:%M:%S') >>> ts '2013-03-03 01:03:02'
&
import time import datetime print '\nStart @ %s' % (datetime.datetime.now().strftime("%Y-%m-%d %H:%M"), ) start = time.time() ctime_str = (datetime.datetime.now() - datetime.timedelta(hours = 1)).strftime("%Y%m%d%H") # 一个小时之前的时间戳字符串「2016062218」 print 'Done! Elapsed %d seconds.\n' % (time.time() - start, )
总结:
- 一般情况下,计时用time模块;
- 如果需要将[特定格式的]时间戳字符串转换成特定对象,需要使用 datetime.datetime.strptime() 函数;
- 如果需要生成指定格式的日期字符串,可以使用的函数为 datetime.datetime.strftime() ;
- 特殊一点的就是:datetime.datetime.fromtimestamp() 和 time.localtime() 。
参考链接:
- http://www.cnblogs.com/65702708/archive/2011/04/17/2018936.html
- https://docs.python.org/2/library/datetime.html#datetime.datetime.strftime
- https://docs.python.org/2/library/datetime.html#datetime.datetime.strptime
- https://docs.python.org/2/library/datetime.html#strftime-strptime-behavior
- https://pymotw.com/2/datetime/#formatting-and-parsing
- http://stackoverflow.com/questions/14762518/python-datetime-strptime-and-strftime-how-to-preserve-the-timezone-informat
- http://54rd.net/html/2015/python_0406/101.html
- http://peiqiang.net/2014/08/15/python-time-and-datetime.html
- http://www.wklken.me/posts/2015/03/03/python-base-datetime.html
- Python中时间戳字符串的大小比较
http://stackoverflow.com/questions/8142364/how-to-compare-two-dates
http://ixyzero.com/blog/archives/2460.html
- http://stackoverflow.com/questions/12400256/python-converting-epoch-time-into-the-datetime
- http://stackoverflow.com/questions/12458595/convert-timestamp-since-epoch-to-datetime-datetime
- http://stackoverflow.com/questions/21787496/converting-epoch-time-with-milliseconds-to-datetime
- http://stackoverflow.com/questions/3694487/python-initialize-a-datetime-object-with-seconds-since-epoch
=END=
《 “用Python处理时间日期字符串的小结” 》 有 6 条评论
为你的博客点个赞
多谢支持。
你的博客也不错~
golang时间格式转换
http://www.birdcat.cn/golang/golang-%E6%97%B6%E9%97%B4%E6%A0%BC%E5%BC%8F%E8%BD%AC%E6%8D%A2.html
https://golang.org/pkg/time/
https://gobyexample.com/time-formatting-parsing
http://stackoverflow.com/questions/33119748/golang-convert-time-time-to-string
http://stackoverflow.com/questions/25845172/parsing-date-string-in-golang
Go时间戳和日期字符串的相互转换
http://www.cnblogs.com/baiyuxiong/p/4349595.html
如何将 Unix时间戳(timestamp) 转换成普通可理解的时间格式?
http://tool.chinaz.com/Tools/unixtime.aspx
`
如何在不同编程语言中获取现在的Unix时间戳(Unix timestamp)?
如何在不同编程语言中实现 Unix时间戳(Unix timestamp) → 普通时间?
如何在不同编程语言中实现 普通时间 → Unix时间戳(Unix timestamp)?
`
http://stackoverflow.com/questions/3682748/converting-unix-timestamp-string-to-readable-date-in-python
分别用Linux上的date命令和Mac上的date命令该如何实现?
`
# Linux
date -d @1493195547
date -d @1493195547 +”%F %T”
# Mac
date -r 1493195547
date -r 1493195547 “+%F %T”
`
Linux下如何用C语言获取当前的日期/时间信息
https://stackoverflow.com/questions/1442116/how-to-get-date-and-time-value-in-c-program
https://stackoverflow.com/a/30759067
https://linux.die.net/man/3/localtime
`
time + localtime
strftime
asctime
`
Python中如何获取当天是当月的第几天(以空格填充,而非以0填充)
https://stackoverflow.com/questions/904928/python-strftime-date-without-leading-0
https://www.gnu.org/software/libc/manual/html_node/Formatting-Calendar-Time.html
`
rsyslog的日志格式里面出现了(用空格填充):
Nov 1
而不是预计的(用0填充):
Nov 01
而之前的Python脚本写的是:
In [8]: time.strftime(“%b %d “)
Out[8]: ‘Nov 01 ‘
In [11]: time.strftime(“%b %-d “)
Out[11]: ‘Nov 1 ‘
In [12]: time.strftime(“%b %e “)
Out[12]: ‘Nov 1 ‘
所以,如果希望处理这种「以空格填充」的时候,需要使用 ‘%e’ 而不是常见的 ‘%d’ ,以上。粗暴的方法也有,那就是 str.replace() ,不过不太优雅就是了。
`