Loading

time模块

  • 导入
import time

包含了三种时间格式

timestamp时间戳,即1970年1月1日00:00:00开始按秒计算的偏移量

struct_time时间元组,由九个元素组成

(在pandas模块中,其可以直接识别struct_time,所以将其转换为时间元组即可)

属性                            值
tm_year(年)                  比如2011 
tm_mon(月)                   1 - 12
tm_mday(日)                  1 - 31
tm_hour(时)                  0 - 23
tm_min(分)                   0 - 59
tm_sec(秒)                   0 - 61
tm_wday(weekday)             0 - 6(0表示周日)
tm_yday(一年中的第几天)        1 - 366
tm_isdst(是否是夏令时)        默认为-1

format time格式化时间,包括自定义合适和固定格式

(一般来说,没有经过处理的表都是这种格式,将其转换为结构时间元组即可)

%a 本地(locale)简化星期名称
%A 本地完整星期名称
%b 本地简化月份名称
%B 本地完整月份名称
%c 本地相应的日期和时间表示
%d 一个月中的第几天(01 - 31)
%H 一天中的第几个小时(24小时制,00 - 23)
%I 第几个小时(12小时制,01 - 12)
%j 一年中的第几天(001 - 366)
%m 月份(01 - 12)
%M 分钟数(00 - 59)
%p 本地am或者pm的相应符
%S 秒(01 - 61)
%U 一年中的星期数。(00 - 53星期天是一个星期的开始。)第一个星期天之前的所有天数都放在第0周。
%w 一个星期中的第几天(0 - 6,0是星期天)
%W 和%U基本相同,不同的是%W以星期一为一个星期的开始。
%x 本地相应日期
%X 本地相应时间
%y 去掉世纪的年份(00 - 99)
%Y 完整的年份
%Z 时区的名字(如果不存在为空字符)
%% ‘%’字符

  • 自定义格式时间转换为unix时间戳timestamp
timeArray = time.strptime(time, "%Y-%m-%d %H:%M:%S")
# 从格式化时间转换成时间元组
timestamp = time.mktime(timeArray)
# 从时间元组转换为转换成时间戳
  • 时间戳转换为指定格式的时间
  time_local = time.localtime(timestamp)
  # 时间戳转换为时间元组
  # localtime也会对应一个标准的时间格式
  dt = time.strftime("%Y-%m-%d %H:%M:%S", time_local)
  # 将时间元组转换成新的时间格式(2016-05-05 20:28:54)

 需要注意,时间元组是一个桥梁,连接了指定格式的时间和时间戳

  • 生成固定格式的时间字符串
time.asctime([t])
# 生成固定格式的时间表示格式,把一个表示时间的元组或者struct_time表示为’Sat Jan 13 21:56:34 2018’这种形式
time.ctime([secs]) 
# 生成固定格式的时间表示格式,把一个时间戳(按秒计算的浮点数)转化为time.asctime()的形式
  • 返回当前时间
int(time.time()*1000   #时间戳(毫秒)
time.localtime() #标准格式的时间
time.strftime('%Y-%m-%d %H:%M:%S') #指定格式的时间
  •  推迟线程的执行,进行睡眠
time.sleep(secs)
# 线程推迟指定的时间运行 线程睡眠指定时间,单位为秒
  •  时间戳的转换

增加位数

print (t)                       
#原始时间数据
print (int(t))                  
#秒级时间戳
print (int(round(t * 1000)))    
#毫秒级时间戳
print (int(round(t * 1000000))) 
#微秒级时间戳

减少位数

print (t)                       
#微秒级时间戳
print (int(t/1000))                  
#毫级时间戳
print (int(t/1000000))    
#秒级时间戳

 注意,如果时间戳和转换的时间对不上(使用在线查询),则可能需要在转换过程中设置时区

df_data['时间'] = df_data['时间'].apply(lambda x:x.replace(tzinfo=pytz.timezone('Asia/Shanghai')))
# 需要使用pytz模块生成一个时区对象

一般来说,tzinfo接收的都是pytz模块生成的对象,其包含了地理位置信息,用于指定时区

posted @ 2020-11-26 16:28  lixin2020  阅读(116)  评论(0)    收藏  举报