pythonround()函数以及time模块datetime模块的使⽤、⽇期格式的转换
Python round() 函数
round() ⽅法返回浮点数x的四舍五⼊值。
语法
round( x [, n] )
参数
1. x – 数字表达式。
2. n – 表⽰从⼩数点位数,其中 x 需要四舍五⼊,默认值为 0。
返回值
返回浮点数x的四舍五⼊值。
案例
#!/usr/bin/python3
print("round(12.56789) : ", round(12.56789))
print("round(12.123, 1) : ", round(12.123, 1))
print("round(34.561, 2) : ", round(34.561, 2))
print("round(111.000099, 3) : ", round(111.000099, 3))
print("round(111.000999, 3) : ", round(111.000999, 3))
print("round(-111.000099, 3) : ", round(-111.000099, 3))
print("round(-111.000999, 3) : ", round(-111.000999, 3))
输出结果:
round(12.56789) : 13
round(12.123, 1) : 12.1
round(34.561, 2) : 34.56
round(111.000099, 3) : 111.0
round(111.000999, 3) : 111.001
round(-111.000099, 3) : -111.0
round(-111.000999, 3) : -111.001
python time模块、datetime模块,格式相互转换
什么是时间元组?
很多Python函数⽤⼀个元组装起来的9组数字处理时间:
序号字段值
04位数年2008
1⽉ 1 到 12
2⽇1到31
3⼩时0到23
4分钟0到59
5秒0到61 (60或61 是闰秒)
6⼀周的第⼏⽇0到6 (0是周⼀)
7⼀年的第⼏⽇1到366 (儒略历)
8夏令时-1, 0, 1, -1是决定是否为夏令时的旗帜
序号字段值
上述也就是struct_time元组。这种结构具有如下属性:
序号属性值
0tm_year2008
1tm_mon 1 到 12
2tm_mday 1 到 31
3tm_hour0 到 23
4tm_min0 到 59
5tm_sec0 到 61 (60或61 是闰秒)
6tm_wday0到6 (0是周⼀)
7tm_yday 1 到 366(儒略历)
8tm_isdst -1, 0, 1, -1是决定是否为夏令时的旗帜
import time
import datetime
# 每个时间戳都以⾃从1970年1⽉1⽇午夜(历元)经过了多长时间来表⽰。
now_time = time.time()
print('时间戳:', now_time)
# 秒级时间戳
second_time = int(now_time)
print('秒级时间戳:', second_time)
# 毫秒级时间戳
print('毫秒级时间戳:', int(round(now_time * 1000)))
# 毫秒级时间戳,基于lambda
t = lambda: int(round(now_time * 1000))
print('毫秒级时间戳,基于lambda:', t())
# 微秒级时间戳
print('微秒级时间戳:', int(round(now_time * 1000*1000)))
# now([tz]) 不指定时区,返回⼀个当前本地时间的datetime.datetime类的对象
# 指定时区,返回指定时区的时间
date_now = w()
print('now:', date_now, type(date_now))
# today函数返回⼀个当前本地时间的datetime.datetime类的对象。
date_today = day()
print('today:', date_today, type(date_today))
# ⽇期时间格式化,datetime.datetime类的对象转换为指定格式的字符串
format_time_str = date_now.strftime('%Y-%m-%d %H:%M:%S')
print('⽇期时间格式化:', format_time_str, type(format_time_str))
# strptime("时间字符串", format) 将格式时间字符串转换为datetime对象
format_time = datetime.datetime.strptime(format_time_str, '%Y-%m-%d %H:%M:%S')
print('字符串⽇期时间格式化:', format_time, type(format_time))
# 将⽇期转为秒级时间戳
time_stamp = int(time.mktime(time.strptime(format_time_str, "%Y-%m-%d %H:%M:%S")))
print('将⽇期转为秒级时间戳', time_stamp)
# 时间元祖或时间数组(9), struct_time
now_struct = time.localtime(second_time)
print('时间元祖:', now_struct)
# 时间字符串转为时间元组
timeArray = time.strptime(format_time_str, "%Y-%m-%d %H:%M:%S")
print('时间元祖:', timeArray)
# 时间元祖可以调⽤其9个属性
# (tm_year, tm_mon, tm_mday, tm_hour, tm_min, tm_sec, tm_wday, tm_yday, tm_isdst)
tm_year = _year
print('tm_year:', tm_year)
# 将秒级时间元祖转为字符串⽇期
date_time = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(second_time))
print('秒级时间元祖转为字符串⽇期:', date_time, type(date_time))
# fromtimestamp(timestamp[,tz]) 给定⼀个时间戳,返回指定时区的datetime.datetime类的对象。不指定时区,返回本地时区的datetime类对象date_now = datetime.datetime.fromtimestamp(time_stamp)
print('秒级时间戳转⽇期:', date_now, type(date_now))
# Datetime类year、month、day、hour、minute、second属性
now_year = ar
print('当前年:', now_year)
now_month = h
print('当前⽉:', now_month)
now_day = date_now.day
print('当前⽇:', now_day)
now_hour = date_now.hour
print('当前时:', now_hour)
now_minute = date_now.minute
print('当前分:', now_minute)
now_second = date_now.second
print('当前秒:', now_second)
时间戳: 1554297769.87987
秒级时间戳: 1554297769
毫秒级时间戳: 1554297769880
毫秒级时间戳,基于lambda: 1554297769880
微秒级时间戳: 1554297769879870
now: 2019-04-03 21:22:49.879940 <class ‘datetime.datetime’>
today: 2019-04-03 21:22:49.879996 <class ‘datetime.datetime’>
⽇期时间格式化: 2019-04-03 21:22:49 <class ‘str’>
字符串⽇期时间格式化: 2019-04-03 21:22:49 <class ‘datetime.datetime’>
将⽇期转为秒级时间戳 1554297769
时间元祖: time.struct_time(tm_year=2019, tm_mon=4, tm_mday=3, tm_hour=21, tm_min=22, tm_sec=49, tm_wday=2, tm_yday=93, tm_isdst=0)
时间元祖: time.struct_time(tm_year=2019, tm_mon=4, tm_mday=3, tm_hour=21, tm_min=22, tm_sec=49, tm_wday=2, tm_yday=93, tm_isdst=-1)
2019
秒级时间元祖转为字符串⽇期: 2019-04-03 21:22:49 <class ‘str’>
秒级时间戳转⽇期: 2019-04-03 21:22:49 <class ‘datetime.datetime’>
当前年: 2019
当前⽉: 4
当前⽇: 3
当前时: 21
当前分: 22
unix时间戳转换日期格式当前秒: 49
strptime判断字符串是否为⽇期格式、判断⽣⽇⽇期格式是否正确
注意:
time.strptime(str_date, “%Y-%m-%d”),其本质是将⽇期字符串转换为时间元祖,如果格式不匹配就会报错,需要配合try使⽤
def is_valid_date(str_date):
"""判断是否是⼀个有效的⽇期字符串"""
flag = False
try:
if ":" in str_date:
time.strptime(str_date, "%Y-%m-%d %H:%M:%S")
else:
time.strptime(str_date, "%Y-%m-%d")
flag = True
except:
pass
try:
if ":" in str_date:
time.strptime(str_date, "%Y/%m/%d %H:%M:%S")
else:
time.strptime(str_date, "%Y/%m/%d")
flag = True
except:
pass
return flag
def is_valid_date(str_date):
"""判断⽣⽇⽇期格式是否正确"""
flag = False
try:
if "-" in str_date:
time.strptime(str_date, "%Y-%m-%d")
else:
time.strptime(str_date, "%Y/%m/%d")
flag = True
except:
pass
return flag
datetime 模块之timedelta
timedalte 是datetime中的⼀个对象,该对象表⽰两个时间的差值
构造函数:datetime.timedelta(days=0, seconds=0, microseconds=0, milliseconds=0, minutes=0, hours=0, weeks=0)其中参数都是可选,默认值为0
1 millisecond = 1000 microseconds
1 minute = 60 seconds
1 hour = 3600 seconds
1 week = 7 days
在构造函数中,参数值的范围如下:
0 <= microseconds < 1000000
0 <= seconds < 3600*24 (the number of seconds in one day)
-999999999 <= days <= 999999999
timedalte 有三个只读属性:
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论