Python 自动生成日期(斜杠格式),不自动补零,解决 ‘#‘ is a bad directive in format ‘%Y/%#m/%#d‘报错

一、问题描述

我希望生成如“1980/8/21"、“1980/8/22"、“1980/8/23"...格式的日期列表,即”斜杠“隔开年月日;同时个位数时不自动补零,如变为“1980/08/21"格式。

二、错误试探

尝试 datatime包,代码如下:

import datetime

def create_assist_date(datestart,dateend):

	# 转为日期格式
	datestart=datetime.datetime.strptime(datestart,'%Y/%#m/%#d')
	dateend=datetime.datetime.strptime(dateend,'%Y/%#m/%#d')
	date_list = []
	date_list.append(datestart.strftime('%Y/%#m/%#d'))
	while datestart<dateend:
		# 日期叠加一天
	    datestart+=datetime.timedelta(days=+1)
	    # 日期转字符串存入列表
	    date_list.append(datestart.strftime('%Y/%#m/%#d'))
	print(date_list)


if __name__ == '__main__':
	create_assist_date(datestart = "2018/06/20",dateend = "2018/06/28")

#来源https://blog.youkuaiyun.com/joson1234567890/article/details/80946974

接着会报错:

 '#' is a bad directive in format '%Y/%#m/%#d'

显然,用于取消自动补零的”#“格式不正确。

三、问题解决

使用pandas包,很简洁,上代码:

import pandas as pd

start_date = "20200704"#开始日期时间
end_date = "20200710"#结束日期时间

pd.date_range(start_date, end_date).strftime("%Y/%#m/%#d").tolist()

#运行结果:
#['2020/7/4',
# '2020/7/5',
# '2020/7/6',
# '2020/7/7',
# '2020/7/8',
# '2020/7/9',
# '2020/7/10']

#参考https://blog.youkuaiyun.com/m0_37586991/article/details/111052639

完美!bang~

<think>嗯,用户想了解MySQL的DATE_FORMAT函数的使用和参数含义。首先我需要回忆一下这个函数的基本用法。记得DATE_FORMAT函数是用来格式日期和时间的,它接受两个参数:日期值和格式字符串。格式字符串里面用特定的占位符来代表同的时间部分,比如%Y是四位年份,%m是两位月份等等。 用户提到的例子是#{birth} &#39;%Y-%m,%d&#39;,可能他们想用这个格式来显示日期。需要确认这个格式是否正确。比如,通常日期的分隔符会用连字符或者斜杠,但用户用了逗号分隔月和日,这可能符合他们的需求,过要提醒他们注意格式的正确性,比如年-月后面跟逗号,然后直接日,是否会导致日期显示异常,比如变成2023-10,01,这可能太常见,但语法上是允许的。 接下来需要列出常用的格式说明符,比如%Y%m、%d、%H、%i、%s这些,分别对应年、月、日、小时、分钟、秒。还要注意区分12小时制和24小时制的同,比如%h是12小时制,%H是24小时制。还有可能需要提到其他格式符,比如月份名称的缩写%M,或者星期几的缩写%W。 然后要给出一些示例,比如如何将日期格式化为年--日,或者年/月/日,或者包含时间的格式。同时,用户提供的例子中使用了%Y-%m,%d,应该指出这里的逗号会被原样输出,所以结果会是类似2023-10,01的形式,是否符合用户预期需要确认。 另外,需要注意DATE_FORMAT函数的第一个参数必须是有效的日期或时间类型,比如DATE、DATETIME或TIMESTAMP,否则可能返回NULL。还有,如果用户传入的是字符串类型的日期,可能需要先用STR_TO_DATE转换,但用户的问题中没有提到这一点,可能需要深入,过可以简要提及。 可能还需要提醒用户关于格式字符串中的文字部分需要用引号括起来,或者如何转义特殊字符,过通常像逗号这样的字符可以直接使用,需要转义。但如果是像%这样的字符,可能需要用两个百分号来转义,比如%%来输出%。 还要检查用户提供的参数是否有误,比如他们是否在格式字符串中正确使用了占位符,有没有拼写错误,比如将%m写成%M,这会导致显示月份名称而是数字。 最后,根据用户提供的引用内容,他们可能已经看过一些例子,但需要更详细的解释。比如引用中的例子有使用date_format(birth, &#39;%Y/%m/%d&#39;),这和用户的问题中的格式同,需要说明参数如何组合使用同的分隔符。 总结一下,回答的结构应该是先介绍函数的作用和基本语法,然后详细解释格式字符串中的各个参数,给出常用参数列表,结合示例说明,最后提醒注意事项,比如参数类型和格式有效性。同时,根据用户提供的引用,确保回答中的例子和引用一致,并正确标注引用来源。</think>### MySQL DATE_FORMAT函数使用说明 #### 1. 函数作用 DATE_FORMAT函数用于将日期/时间值按指定格式转换为字符串,语法为: $$DATE\_FORMAT(date, format)$$ 其中`date`为日期/时间字段或表达式,`format`为格式字符串[^1][^3]。 #### 2. 参数解析(以`date_format(#{birth}, &#39;%Y-%m,%d&#39;)`为例) - **`#{birth}`**:日期字段或有效日期值(DATE/DATETIME类型) - **`&#39;%Y-%m,%d&#39;`**:格式字符串,各占位符含义: | 格式符 | 含义 | 示例输出 | |--------|----------------|------------| | %Y | 四位年份 | 2023 | | %m | 两位月份 | 10 | | %d | 两位日期 | 01 | | 符号 | 原样输出 | `-`和`,` | 该格式输出结果示例:`2023-10,01` #### 3. 常用格式符号 | 格式符 | 功能 | 示例 | |--------|------------------------|------------| | %H | 24小时制小时(00-23) | 14 | | %i | 分钟(00-59) | 05 | | %s | 秒(00-59) | 30 | | %M | 月份名称(January) | October | | %W | 星期名称(Sunday) | Monday | | %a | 缩写星期(Sun) | Mon | #### 4. 使用示例 ```sql -- 格式化为年--日 SELECT DATE_FORMAT(NOW(), &#39;%Y-%m-%d&#39;); -- 2023-10-01 -- 包含中文的格式 SELECT DATE_FORMAT(&#39;2023-10-01&#39;, &#39;%Y%m月%d日&#39;); -- 2023年10月01日[^2] -- 带时分秒的格式 SELECT DATE_FORMAT(&#39;2023-10-01 14:05:30&#39;, &#39;%Y/%m/%d %H:%i:%s&#39;); -- 2023/10/01 14:05:30[^4] ``` #### 5. 注意事项 - 若输入非日期值会返回`NULL` - 格式符区分大小写(如`%M`返回月份名称,`%m`返回数字) - 可组合文字字符:`SELECT DATE_FORMAT(NOW(), &#39;当前时间:%Y-%m-%d %H:%i&#39;)`
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值