关于python下各种时间格式的转换

来源:互联网 发布:战地硬仗优化不错 编辑:程序博客网 时间:2024/06/05 04:32

今天遇到了一个聊天的bug,因为时间戳没有精确到float类型导致时间顺序错乱,显示错误和一些聊天记录会被覆盖。于是了解了一下Python时间的一些显示和转换方式。

 Python在遇到时间相关问题时候通常会用到以下几种时间格式1。时间戳(int,float类型) 2。元组(struct_time类型)内涵九个元素 3。datetime类型(如:2017-11-28 14:49:43.0970004。格式化的时间字符串 (String类型)

时间戳作为其中一种表示时间的方式,是指格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总秒数。

1)最简单的获取时间戳的方式是导入 time模块  之后直接通过 time.time()方法可以获得当前时间,获得的时间戳类型是float类型。

 import timetime.time()
       2)time.gmtime()或者 time.localtime() 方法 将获得的时间戳类型改为struct_time类型 两种方法都可以传入时间戳参数,默认传入当前时间戳

(区别是gmtime()方法返回的是0时区的时间,localtime()方法返回的是当地时区的时间,中国是8时区,所以相差8个小时)

返回值为以下九个元素   time.struct_time(tm_year=2017, tm_mon=11, tm_mday=28, tm_hour=6, tm_min=1, tm_sec=15, tm_wday=1, tm_yday=332, tm_isdst=0)

3)from datetime import datetime

datetime.now()方法获取datetime格式的当前时间(当前时区 操作系统设置的时区)。
      4)


时间转换:

*  struct_time转化为时间戳

   time.mktime(t


*struct_time转换成自定义的String格式

 time.strftime("%Y-%m-%d %X", time.localtime())  精确到秒


*Str 转成struct_time

time.strptime(timestr, "%Y-%m-%d %H:%M:%S")


*timestamp转化为datetime

from datetime import datetime
      datetime.fromtimestamp(time.time())


*datetime 转timestamp

from datetime import datetime
     dt = datetime(2017, 11, 18, 12, 20) # 用指定日期时间创建datetime
     dt.timestamp() # 把datetime转换为timestamp


*datetime 转为Str

from datetime import datetime

t=datetime.now()   t.strftime("%Y-%m-%d %H:%M:%S.%f"

 

*Str 转为datetime

from datetime import datetime
      datetime.strptime('2017-11-28 15:19:59', '%Y-%m-%d %H:%M:%S')



原创粉丝点击