最近测试了一个接口,各种换算时间,把时间相关的操作查了一遍。。总结下
1.因为本机时间是北京时间,Jenkins上的时间是utc格林威治时间会少8h,所以从时间戳转化成时间time.localtime()会根据具体的本地时间转换,产生不一致,所以指定具体时区可以避免这个问题
根据时间戳转换时间
reset_time = 1552406400
reset_time = datetime.datetime.fromtimestamp(reset_time, pytz.timezone('Asia/Shanghai'))
2.没有时区不一致的问题时,将时间戳转换为具体格式的时间
active_time = 1552406400
active_time = time.strftime('%Y-%m-%d', time.localtime(active_time))
可以输出:
'2019-03-13'
3.将timestamp-->datetime.datetime 格式-->str类型
reset_time = datetime.datetime.fromtimestamp(reset_time, pytz.timezone('Asia/Shanghai')).strftime('%Y-%m-%d')
另外:将时间相关的操作简单封装了下,仅供参考
#获取本月第一天日期和本月最后一天日期
def get_current_month_start_and_end():
"""
年份 date(2017-09-08格式)
:param date:
:return:本月第一天日期和本月最后一天日期
"""
#获取今天的日期
date = time.strftime('%Y-%m-%d',time.localtime(time.time()))
print(date)
if date.count('-') != 2:
raise ValueError('- is error')
year, month = str(date).split('-')[0], str(date).split('-')[1]
end = calendar.monthrange(int(year), int(month))[1]
start_date = '%s-%s-01' % (year, month)
end_date = '%s-%s-%s' % (year, month, end)
return start_date, end_date
#将时间减1天
def date_to_yesterday(date):
if isinstance(date,str):
if "-" not in date:
date = date[:4]+"-"+date[4:6]+"-"+date[-2:]
#将str转换为datetime类型
date = datetime.datetime.strptime(date, '%Y-%m-%d')
delta = datetime.timedelta(days=-1)
yesterday = date + delta
return yesterday
#将时间加1天
def date_to_tomorrow(date):
if isinstance(date,str):
if "-" not in date:
date = date[:4]+"-"+date[4:6]+"-"+date[-2:]
#将str转换为datetime类型
date = datetime.datetime.strptime(date, '%Y-%m-%d')
delta = datetime.timedelta(days=1)
tomorrow = date + delta
return tomorrow
#将字符串转换成日期类型
def string_toDatetime(string):
return time.strptime(string, "%Y-%m-%d")
#将日期转换本月最后一天
def date_month_lastday(date):
if isinstance(date,str):
date = datetime.datetime.strptime(date, '%Y-%m-%d')
last_day = datetime.date(date.year, date.month+1, 1) - datetime.timedelta(1)
return last_day
#将日期转换本月第一天
def date_month_firstday(date):
if isinstance(date,str):
date = datetime.datetime.strptime(date, '%Y-%m-%d')
first_day = datetime.date(date.year, date.month, 1)
return first_day
#获取今天的日期
def get_today():
return time.strftime("%Y%m%d")