float,python
struct tuple(time.struct_time 或 datetime.datetime),数组
str函数
经常使用的:spa
float --> struct tuple: time.localtime( float )code
struct time tuple --> str: time.strftime(format, struct time tuple)orm
str --> struct time tuple: time.strptime(str, format)字符串
struct time tuple --> float : time.mktime(struct time tuple)form
struct time tuple --> datetime: datetime(*time_tuple[0:6])import
float --> datetime: datetime.datetime.fromtimestamp( float )基础
datetime --> str: datetime.strftime(format, datetime)
str --> datetime: datetime.strptime(str, format)
datetime --> struct time tuple: datetime.timetuple()
对于时间数据,如2016-05-05 20:28:54,有时须要与时间戳进行相互的运算,此时就须要对两种形式进行转换,在Python中,转换时须要用到time模块,具体的操做有以下的几种:
将时间转换为时间戳
从新格式化时间
时间戳转换为时间
获取当前时间及将其转换成时间戳
一、将时间转换成时间戳
将如上的时间2016-05-05 20:28:54转换成时间戳,具体的操做过程为:
利用strptime()函数将时间转换成时间数组
利用mktime()函数将时间数组转换成时间戳
#coding:UTF-8 import time dt = "2016-05-05 20:28:54" #转换成时间数组 timeArray = time.strptime(dt, "%Y-%m-%d %H:%M:%S") #转换成时间戳 timestamp = time.mktime(timeArray) print timestamp
二、从新格式化时间
从新格式化时间须要如下的两个步骤:
利用strptime()函数将时间转换成时间数组
利用strftime()函数从新格式化时间
#coding:UTF-8 import time dt = "2016-05-05 20:28:54" #转换成时间数组 timeArray = time.strptime(dt, "%Y-%m-%d %H:%M:%S") #转换成新的时间格式(20160505-20:28:54) dt_new = time.strftime("%Y%m%d-%H:%M:%S",timeArray) print dt_new
三、将时间戳转换成时间
在时间戳转换成时间中,首先须要将时间戳转换成localtime,再转换成时间的具体格式:
利用localtime()函数将时间戳转化成localtime的格式
利用strftime()函数从新格式化时间
#coding:UTF-8 import time 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
四、按指定的格式获取当前时间
利用time()获取当前时间,再利用localtime()函数转换为localtime,最后利用strftime()函数从新格式化时间。
#coding:UTF-8 import time #获取当前时间 time_now = int(time.time()) #转换成localtime time_local = time.localtime(time_now) #转换成新的时间格式(2016-05-09 18:59:20) dt = time.strftime("%Y-%m-%d %H:%M:%S",time_local) print dt
datetime
一、当前时间
>>> import time >>> time.time() 1450681042.751 >>> time.localtime(time.time()) time.struct_time(tm_year=2015, tm_mon=12, tm_mday=21, tm_hour=15, tm_min=0, tm_sec=2, tm_wday=0, tm_yday=355, tm_isdst=0) >>> time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time())) '2015-12-21 15:01:28' >>> from datetime import datetime >>> datetime.now() datetime.datetime(2015, 12, 21, 14, 58, 38, 279000) >>> datetime.today() datetime.datetime(2015, 12, 21, 14, 59, 20, 204000) >>> now = datetime.now() >>> now.year, now.month, now.day, now.hour, now.minute, now.second, now.microsecond >>> now.isocalendar() # 2015年 第52周 星期一 (2015, 52, 1) >>> now.isoweekday() # 星期几,1:Monday; 而 now.weekday() 返回值从0开始
二、字符串转换为日期
>>> s='2015-12-21 15:01:28' >>> timeTuple = datetime.strptime(s, '%Y-%m-%d %H:%M:%S') datetime.datetime(2015, 12, 21, 15, 1, 28) >>> datetime.datetime.strftime('%Y/%m/%d %H:%M:%S', timeTuple) >>> s='2015-12-21 15:01:28' >>> timeTuple = datetime.strptime(s, '%Y-%m-%d %H:%M:%S') time.struct_time(tm_year=2015, tm_mon=12, tm_mday=21, tm_hour=15, tm_min=1, tm_sec=28, tm_wday=0, tm_yday=355, tm_isdst=-1) >>> time.strftime('%Y/%m/%d %H:%M:%S',timeTuple)
三、时间戳
>>> time.mktime(time.strptime(s,'%Y-%m-%d %H:%M:%S')) 1450681288.0 >>> int(time.time()) # timestamp to time tuple in UTC timestamp = 1226527167.595983 time_tuple = time.gmtime(timestamp) print repr(time_tuple) # timestamp to time tuple in local time timestamp = 1226527167.595983 time_tuple = time.localtime(timestamp) print repr(time_tuple)
四、日期加减
多加一天 >>> print (datetime.datetime.now()+datetime.timedelta(days=1)).strftime("%Y-%m-% d %H:%M:%S") 2017-07-16 15:12:42 >>> 多加一小时 >>> print (datetime.datetime.now()+datetime.timedelta(hours=1)).strftime("%Y-%m- %d %H:%M:%S") 2017-07-15 16:10:43 >>> 多加一分钟 >>> print (datetime.datetime.now()+datetime.timedelta(minutes=1)).strftime("%Y-% m-%d %H:%M:%S") 2017-07-15 15:12:56 >>>
time 是 float 为基础,小数点后是毫秒,整数部分是秒。(Java 是毫秒,因此,python_time*1000 == Java_time)
datetime 是int, 略去了毫秒部分。datetime tuple 少于 struct_time
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 当前时区的名称 %% %号自己