Python中的strftime()函数是一个非常常用的函数,主要用于将时间转换成我们想要的格式,从而方便衡量时间的一些特定业务操作。
一、strftime()函数的基本概念
strftime()函数定义:strftime(format [, value])
其中 format 是格式指令字符串,用于定义输出的日期或时间格式。
value 是一个可选的参数,用于指定格式化的时间,返回字符串表示按指定格式格式化的时间。
>>> import time
>>> print(time.strftime('%Y-%m-%d %H:%M:%S',time.localtime()))
2019-09-06 21:08:02
上述代码将当前时间格式化为2019-09-06 21:08:02的格式。strftime()函数的format参数既可以是指定格式的字符串,也可以是字符串的元组。通过元组形式构建格式化字符串可避免一些错误。例如:
>>>print(time.strftime('%Y %m %d %H:%M:%S',time.localtime()))
2019 09 06 21:15:55
以上代码输出表明将当前时间格式化输出,并且中间的date部分使用了“ ”空格进行隔开。这是常见的年月日记录方式。
二、strftime()函数常见格式字符串
1. 标准格式化指令
指令 | 含义 | 输出例子 |
---|---|---|
%Y | 年份 | 1999, 2003, 2019 |
%m | 月份 | 01, 02, 03, ..., 12 |
%B | 月份(全拼) | January, February, ..., December |
%b | 月份(简称) | Jan, Feb, ..., Dec |
%d | 日期 | 01, 02, 03, ..., 31 |
%j | 当年中的天数 | 001, 002, ..., 365, 366 |
%w | 星期 | 0, 1, 2, ..., 6(周日为 0) |
%A | 星期(全拼) | Sunday, Monday, ..., Saturday |
%a | 星期(简称) | Sun, Mon, ..., Sat |
%H | 小时(24小时制) | 00, 01, 02, ..., 23 |
%I | 小时(12小时制) | 01, 02, ..., 12 |
%M | 分钟 | 00, 01, 02, ..., 59 |
%S | 秒 | 00, 01, 02, ..., 59 |
%p | AM/PM | AM, PM |
%Z | 时区 | PST, CST, EST, EDT, GMT, UTC, GMT+8 |
%c | 完整的日期和时间表示 | Mon May 22 17:28:40 2017 |
%x | 长格式日期 | 05/08/17 |
%X | 长格式时间 | 17:28:40 |
2. Python strftime指令的拓展使用
可以使用Python strftime函数还可以进一步拓展对时间的输出格式化。例如:
格式: %x:日期
格式:%X:时间
可使用的命令:
- 采用%F格式输出完整的时间,如:“2017-09-06”表示日期,这在进行文件命名时特别便于排序;
- 采用%s格式输出时间戳;
- 采用%a, %A, %b, %B输出各类表示星期和月份的全名和缩写;
- 时间的运算,可在时间表示字符串的基础上,通过神器dateutil库实现额外计算,例如统计某个月的天数,某个时间点过一个小时后的时间点是什么,两个时间点间隔的天数等等。
三、strftime()函数的常见运用场景
1. 将unix时间戳转换为实际时间
>>> import time
>>> print (time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(123456789)))
1973-11-29 21:33:09
当你想要查看一个unix时间戳是什么时候,可以借助time.strftime()方法进行转换输出。
2. 将日期字符串转换为指定格式字符串
>>> import datetime
>>> time_str = "2019-09-06 17:00:00"
>>> date_time = datetime.datetime.strptime(time_str, "%Y-%m-%d %H:%M:%S")
>>> print(date_time.strftime("%Y年%m月%d日 %H时%M分%S秒"))
2019年09月06日 17时00分00秒
3. 按照年、月、日、小时分类文件
import os
import time
def classify(folder, file_list):
for file_name in file_list:
if '.txt' in file_name:
full_path = os.path.join(folder, file_name)
file_time = os.path.getmtime(full_path)
time_struct = time.localtime(file_time)
print(f"{file_name} 修改时间是: ", file_time, time_struct.tm_year, time_struct.tm_mon, time_struct.tm_mday, time_struct.tm_hour)
# test
folder = 'C:\\Users\\abc\\file_folder'
file_list = ['a.txt', 'b.xlsx', 'c.docx']
classify(folder, file_list)
以上函数可以将文件进行分类,按照年、月、日、小时分类,便于对文件的管理和查找。
4. 返回当前季度
import datetime
def get_quarter():
now = datetime.date.today()
month = now.month
day = now.day
quarter = 1 if month in [1, 2, 3] else (2 if month in [4, 5, 6] else (3 if month in [7, 8, 9] else 4))
return quarter
# test
print(get_quarter())
该函数可以方便的实现根据时间计算出当前的季度,便于对季度数据的统计。
四、总结
Python中的strftime()函数是一个很重要的时间函数,主要用于将时间转换成想要的格式,方便衡量时间的一些特定业务操作。我们可以看到使用该函数,可以非常方便地处理重要的时间格式问题,将时间转化为各种形式,并且可以进行一系列的节奏控制与数据处理的操作。希望读者可以更好的利用Python的时间处理库,解决具体场景中的时间问题。