格式化符号

符号-小写 描述 符号-大写 描述
%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
  • 获取当前时间(datetime):datetime.now()datetime.datetime(2022, 7, 8, 21, 3, 15, 550059) 类型:datetime

    • 转struct_time:datetime.now().timetuple()
    • 转字符串:datetime.strftime(datetime.now(), '%Y-%m-%d %H:%M:%S')
    • 转时间戳:datetime.timestamp(datetime.now())

      2、字符串↔时间戳

      字符串➡时间戳
  • 使用 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')

  1. def str2date(string):
  2. """将字符串日期、周次转为日期
  3. 字符串日期格式:2022.7.1 2022.07.01 7.1
  4. 周次格式:W52
  5. """
  6. string = string.strip('/')
  7. if re.search('W\d{1,2}', string, re.IGNORECASE):
  8. week = int(re.search('\d{1,2}', string).group())
  9. current_week = datetime.now().isocalendar()[1]
  10. years = datetime.now().year if week <= current_week else datetime.now().year - 1
  11. wk = str(years) + '-W' + str(week) + '-1'
  12. date = datetime.strptime(wk, '%Y-W%W-%w')
  13. else:
  14. if string.count('.') == 1:
  15. years = datetime.now().year if int(string.split('.')[0]) < datetime.now().month else datetime.now().year - 1
  16. string = str(years) + '.' + string
  17. date = datetime.strptime(string, '%Y.%m.%d')
  18. return date