格式化符号
| 符号-小写 | 描述 | 符号-大写 | 描述 |
|---|---|---|---|
| %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 - 1wk = 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 - 1string = str(years) + '.' + stringdate = datetime.strptime(string, '%Y.%m.%d')return date
