Python3 时间转换那事

在 Python 中,大多数是用于对于数据的获取及处理。其中关于时间的各种转换和应用 是在这过程中碰到的比较多的地方,时间的转换处理不算难,但是会比较繁琐,在本文章里,会把时间转换的方式方法进行一一列举说明。

注:本文代码都是基于 Python3 来说明展示的。

用法1. 获取时间戳

关于 Python 的时间戳,这里有个小知识点,就是在大多其他的编程语言里,得到的时间戳是 12 位的数,而在 Python 里得到的时间戳是9位的,是因为其他语言的个位值为毫秒值,在Python里个位值为秒,所以其中的转换关系也很简单:

python_stamp * 1000 = other_stamp

直接得到 当前时间戳

有两种方便的方法获取当前的时间戳,一种是根据time来获取,这也是最常用的方法,其次就是 datetime 提供的 now() 也可以获取到当前的时间戳

#方式1 
time.time()
#方式2
datetime.datetime.now().timestamp()```

###根据 字符串 得到对应的时间戳
如根据类似 ”2000-01-01 00:00:01“ 的字符串形式,得到对应的时间戳值

source = "2000-01-01 00:00:59"
time_format = "%Y-%m-%d %H:%M:%S"
struct_time = time.strptime(source, time_format)
timeStamp = time.mktime(struct_time)```

根据 datetime 对象 得到对应的时间戳

#获取当前时间的datetime对象
curr_datetime = datetime.datetime.now() 
timeStamp = curr_datetime.timestamp()```


##用法2. 得到时间格式的字符串
得到例如 ”2000-01-01 00:00:01“ 的字符串。
这里说明关于字符串的转换,必不可少的是 对应的日期格式 的字符代码 表示,比如: %Y表示的是 年、%m表示的是 月,等等这些。这里有个官方的文档 [Format Codes](http://t.cn/RK1wopB)  很详细的说明了各种格式,可以根据自己的需求进行查阅。
### 由 datetime 得到想要的字符串格式

curr_datetime = datetime.datetime.now() #获取当前时间的datetime对象
time_format = "%Y-%m-%d %H:%M:%S"
time_str = curr_datetime.strftime(time_format)```

根据 时间戳

source_stamp = 946656059.0
datetime_obj  = datetime.datetime.fromtimestamp(source_stamp)
time_format = "%Y-%m-%d %H:%M:%S"
time_str = datetime_obj.strftime(time_format)```

##用法3.获得 datetime 对象
###3.1 由字符串转 datetime

source = "2000-01-01 00:00:59"
time_format = "%Y-%m-%d %H:%M:%S"
datetime_obj = datetime.datetime.strptime(source, time_format)```

3.2 由时间戳转 datetime

source_stamp = 946656059.0
datetime_obj  = datetime.datetime.fromtimestamp(source_stamp)

用法4. 获取时间差

经常会有俩个时间对比的应用场景,对比想差多少秒,想差多少天等,这里就是列举用于这里的对比。

4.1 两个时间为时间戳的形式对比

Python里的时间戳个位数代表的是秒,所以当两个时间戳值相减得出的结果,直接就是两个时间想差的秒数,后面就是代码举例说明:

source_stamp_1 = 946656001.0
source_stamp_2 = 946936223.0
diff_stamp = source_stamp_2 - source_stamp_1

diff_s = diff_stamp
diff_m = diff_stamp/60
diff_h = diff_stamp/3600
diff_day = diff_stamp/3600/24

print('diff_s[两个时间戳想差的秒数值]:',diff_s)
print('diff_m[两个时间戳想差的分钟值]:',diff_m)
print('diff_h[两个时间戳想差的小时值]:',diff_h)
print('diff_day[两个时间戳想差的天数值]:',diff_day) ```
这种方法不好的地方在于由于本身的时间戳带有很精确的值,所以计算得到的结果很有可能有很多位的小数位,在大多数情况下,是没有必要这样的,所以处理方法也很简单,将得到的值 强转成 int 类型就可以了,比如以上的例子的结果可以像下面这样:

print('diff_s[两个时间戳想差的秒数值]:',int(diff_s))
print('diff_m[两个时间戳想差的分钟值]:',int(diff_m))
print('diff_h[两个时间戳想差的小时值]:',int(diff_h))
print('diff_day[两个时间戳想差的天数值]:',int(diff_day))```

4.2 两个时间为 datetime 的形式对比

这种的对比由于用的是 Python 自带的方法,所以比较官方,正式,是常推荐的方法。

diff_s = (datetime_2 - datetime_1).total_seconds()
diff_day = (datetime_2 - datetime_1).days

print('diff_s[两个时间戳想差的秒数值]',diff_s)
print('diff_day[两个时间戳想差的天数值]', diff_day)```

到此,此篇文章就结束了,希望可以帮助到看到此篇文章的人,及留给以后的自己进行查阅 

你可能感兴趣的:(Python3 时间转换那事)