【Python基础篇】获取日期、处理日期
当前日期时间
时间戳格式
获取当前时间,时间戳格式
格式:1578879320.382141
1
2
3import time
print(time.time())
JSON格式
获取当前日期和时间,并格式化时间戳为本地的日期和时间
格式:time.struct_time(tm_year=2020, tm_mon=1, tm_mday=13, tm_hour=9, tm_min=36, tm_sec=44, tm_wday=0, tm_yday=13, tm_isdst=0)
1
2
3import time
print(time.localtime(time.time()))
yyyy-MM-dd
格式:2020-01-13
1
2
3import datetime
print(datetime.datetime.now().strftime('%Y-%m-%d'))
yyyy-MM-dd hh:mm:ss
获取当前时间,yyyy-MM-dd hh:mm:ss 格式
格式:2020-01-13 09:39:20
1
2
3import time
print(time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time())))
strftime(format[, tuple]) -> string
将指定的struct_time
(默认为当前时间),
根据指定的格式化字符串输出 python中时间日期格式化符号:
符合 | 含义 |
---|---|
%y | 两位数的年份表示(00-99) |
%Y | 四位数的年份表示(000-9999) |
%m | 月份(01-12) |
%d | 月内中的一天(0-31) |
%H | 24小时制小时数(0-23) |
%I | 12小时制小时数(01-12) |
%M | 分钟数(00=59) |
%S | 秒(00-59) |
%a | 本地简化星期名称 |
%A | 本地完整星期名称 |
%b | 本地简化的月份名称 |
%B | 本地完整的月份名称 |
%c | 本地相应的日期表示和时间表示 |
%j | 年内的一天(001-366) |
%p | 本地A.M.或P.M.的等价符 |
%U | 一年中的星期数(00-53)星期天为星期的开始 |
%w | 星期(0-6),星期天为星期的开始 |
%W | 一年中的星期数(00-53)星期一为星期的开始 |
%x | 本地相应的日期表示 |
%X | 本地相应的时间表示 |
%Z | 当前时区的名称 |
%% | %号本身 |
yyyy-MM-dd hh:mm:ss.ff
完整格式:yyyy-MM-dd hh:mm:ss.ffff
ffff:秒的小数精度
格式:2020-01-13 09:45:06.057097
1
2
3import datetime
print(datetime.datetime.now())
指定日期时间
获取昨天的当前时间
1 | import datetime |
获取昨天指定的时间
1 | import datetime |
获取前一周
获取前一周 (获取前7天周期,不包括今天)
格式:2020-01-06 00:00:00---2020-01-12 23:59:59
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17import datetime
# 当前日期 2020-01-13 10:36:27.432142
# 1个单位天数(1 day, 0:00:00)
one_day = datetime.timedelta(days=d.isoweekday())
# 昨天的当前时间(2020-01-12 10:36:27.432142)
y_now = d - one_day
# 6个单位天数(6 days, 0:00:00)
six_day = datetime.timedelta(days=6)
# 6天前的当前时间(2020-01-06 10:36:27.432142)
six_now = y_now - six_day
# 6天前的0点0分0秒(2020-01-06 00:00:00)
date_from = datetime.datetime(six_now.year, six_now.month, six_now.day, 0, 0, 0)
# 昨天的23点59分59秒(2020-01-12 23:59:59)
date_to = datetime.datetime(y_now.year, y_now.month, y_now.day, 23, 59, 59)
# 前7天的周期,不包括今天
print('---'.join([str(date_from), str(date_to)]))
获取前一个月
获取前一个月的周期 (上个月的第一天至上个月的最后一天)
格式:2019-12-01 00:00:00 --- 2019-12-31 23:59:59
1
2
3
4
5
6
7
8
9
10
11
12
13import datetime
# 当前日期 2020-01-13 10:53:28.794019
# 获取今天是当前月份的第几天(13 days, 0:00:00)
day_count = datetime.timedelta(days=d.day)
# 获取前一个月最后一天的日期和时间(2019-12-31 10:53:28.794019)
l_month = d - day_count
# 获取前一个月最后一天的日期和时间(2019-12-01 00:00:00)
date_from = datetime.datetime(l_month.year, l_month.month, 1, 0, 0, 0)
# 获取前一个月第一天的日期和时间(2019-12-31 23:59:59)
date_to = datetime.datetime(l_month.year, l_month.month, l_month.day, 23, 59, 59)
# # 前一个月的周期 2019-12-01 00:00:00 --- 2019-12-31 23:59:59
print(' --- '.join([str(date_from), str(date_to)]))
日期格式转化
美式日期转化
格式:October 11, 2019 转 2019-10-11
1
2
3
4
5
6
7
8
9
10import time
def trans_format(self, datetime):
time_struct = time.strptime(datetime, '%B %d, %Y')
times = time.strftime('%Y-%m-%d', time_struct)
return times
# 调用转化方法
datetime = self.trans_format(times)
print(datetime)
UTC格式转本地时间
格式:2019-10-10T21:03:10.000Z 转 2019-10-11 05:03:10
1
2
3
4
5
6
7import datetime
utc = "2019-10-10T21:03:10.000Z"
UTC_FORMAT = "%Y-%m-%dT%H:%M:%S.%fZ"
utcTime = datetime.datetime.strptime(utc, UTC_FORMAT)
localtime = utcTime + datetime.timedelta(hours=8)
print(localtime)
字符串转datetime
格式:2019-01-12 09:52:40
1
2
3
4
5import datetime
str = '2019-01-12 09:52:40'
time = datetime.datetime.strptime(str, '%Y-%m-%d %H:%M:%S')
print(time)
datetime转字符串
格式:2020-01-13 09:48:22
1
2
3
4
5import datetime
# 当前日期和时间
now_datetime = datetime.datetime.now()
print(now_datetime.strftime('%Y-%m-%d %H:%M:%S'))