您的位置:

Python time strftime:格式化日期和时间字符串

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:时间
可使用的命令:

  1. 采用%F格式输出完整的时间,如:“2017-09-06”表示日期,这在进行文件命名时特别便于排序;
  2. 采用%s格式输出时间戳;
  3. 采用%a, %A, %b, %B输出各类表示星期和月份的全名和缩写;
  4. 时间的运算,可在时间表示字符串的基础上,通过神器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的时间处理库,解决具体场景中的时间问题。