格式化符号
符号-小写 | 描述 | 符号-大写 | 描述 |
---|---|---|---|
%a | 本地简化星期名称 | %A | 本地完整星期名称 |
%b | 本地简化的月份名称 | %B | 本地完整的月份名称 |
%c | 本地相应的日期表示和时间表示 | ||
%d | 月内中的一天(0-31) | ||
%H | 24小时制小时数(0-23) | ||
%I | 12小时制小时数(01-12) | ||
%j | 年内的一天(001-366) | ||
%m | 月份(01-12) | %M | 分钟数(00=59) |
%S | 秒(00-59) | ||
%p | 本地A.M.或P.M.的等价符 | ||
%U | 一年中的星期数(00-53)星期天为星期的开始 | ||
%w | 星期(0-6),星期天为星期的开始 | %W | 一年中的星期数(00-53)星期一为星期的开始 |
%x | 本地相应的日期表示 | %X | 本地相应的时间表示 |
%y | 两位数的年份表示(00-99) | %Y | 四位数的年份表示(000-9999) |
%Z | 当前时区的名称 | ||
%% | %号本身 |
1、获取当前时间并进行转换
- 获取当前时间(time):
time.time()
1657284531.02981 类型:float- 转struct_time:
time.localtime(time.time())
类型:time.struct_time - 转字符串:
time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time()))
类型:str
- 转struct_time:
获取当前时间(datetime):
datetime.now()
datetime.datetime(2022, 7, 8, 21, 3, 15, 550059) 类型:datetime使用 time:
time.mktime(time.strptime(time_str, '%Y-%m-%d %H:%M:%S'))
- 使用 datetime:
datetime.timestamp(datetime.strptime(datetime_str, '%Y-%m-%d %H:%M:%S'))
- 使用 pandas:
time.mktime(pd.to_datetime(date_str).timetuple())
时间戳➡字符串:
- 使用 datetime:
datetime.strftime(datetime.fromtimestamp(datetime_stamp2), '%Y-%m-%d %H:%M:%S')
3、日期戳(五位整数)转日期格式
- 使用 datetime:
pd.to_datetime('1899-12-30') + pd.Timedelta(str(stamp)+'D')
4、时区字符转日期时间
time_str = "Fri Jul 08 20:22:37 +0800 2022"
datetime.fromtimestamp(time.mktime(time.strptime(time_string, '%a %b %d %H:%M:%S +0800 %Y')))
5、获取当前第几周
方法一:time.strftime("%W")
方法二:datetime.now().isocalendar()[1]
或datetime(2018,6,30).isocalendar()[1]
方法三:time.localtime()[7]/7+1
6、根据第几周获取日期
比如2019年第46周 周一的日期wk = '2019-W46-1'
datetime.strptime(wk, '%Y-W%W-%w')
def str2date(string):
"""将字符串日期、周次转为日期
字符串日期格式:2022.7.1 2022.07.01 7.1
周次格式:W52
"""
string = string.strip('/')
if re.search('W\d{1,2}', string, re.IGNORECASE):
week = int(re.search('\d{1,2}', string).group())
current_week = datetime.now().isocalendar()[1]
years = datetime.now().year if week <= current_week else datetime.now().year - 1
wk = str(years) + '-W' + str(week) + '-1'
date = datetime.strptime(wk, '%Y-W%W-%w')
else:
if string.count('.') == 1:
years = datetime.now().year if int(string.split('.')[0]) < datetime.now().month else datetime.now().year - 1
string = str(years) + '.' + string
date = datetime.strptime(string, '%Y.%m.%d')
return date