You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

技术需求:将用户输入日期转换为时间戳及MySQL Timestamp格式(YYYY-MM-DD)

刚好碰到过类似的需求,用Python来实现这两个功能非常顺手,我给你拆解一下,完全覆盖你提到的「日 月 年」格式、缺年以及带前导零的场景:

功能1:将日期转换为时间戳

我们可以用Python内置的datetime模块来搞定,它能轻松解析各种常见的日期变体,缺年的情况还能自动补全(默认补当前年份,你也可以根据需求调整)。直接上代码:

from datetime import datetime
import time

def date_to_timestamp(date_str):
    # 定义支持的「日 月 年」格式列表,可根据实际需求扩展
    supported_formats = [
        "%d %B %Y",  # 完整月份名+年,比如 "12 February 2017"
        "%d %b %Y",   # 月份缩写+年,比如 "12 Feb 2017"
        "%d %m %Y",   # 数字月份+年,比如 "05 04 2023"
        "%d %B",      # 完整月份名(缺年),比如 "05 April"
        "%d %b",      # 月份缩写(缺年),比如 "05 Apr"
        "%d %m"       # 数字月份(缺年),比如 "5 4" 或 "05 04"
    ]
    
    parsed_date = None
    for fmt in supported_formats:
        try:
            parsed_date = datetime.strptime(date_str, fmt)
            break
        except ValueError:
            continue
    
    if not parsed_date:
        raise ValueError(f"无法识别的日期格式: {date_str}")
    
    # 处理缺年场景:strptime缺年时默认年份为1900,这里替换为当前年份
    if parsed_date.year == 1900:
        parsed_date = parsed_date.replace(year=datetime.now().year)
    
    # 转换为秒级时间戳
    return int(time.mktime(parsed_date.timetuple()))

测试示例:

  • 输入 "12 February 2017" → 返回对应时间戳(比如 1486857600,取决于具体时区)
  • 输入 "5 4" → 解析为当年4月5日并返回对应时间戳
  • 输入 "05 Apr" → 解析为当年4月5日并返回对应时间戳
功能2:将日期解析为MySQL Timestamp格式(YYYY-MM-DD)

这个功能可以复用上面的日期解析逻辑,拿到datetime对象后用strftime直接输出目标格式就行:

from datetime import datetime

def date_to_mysql_format(date_str):
    supported_formats = [
        "%d %B %Y", "%d %b %Y", "%d %m %Y",
        "%d %B", "%d %b", "%d %m"
    ]
    
    parsed_date = None
    for fmt in supported_formats:
        try:
            parsed_date = datetime.strptime(date_str, fmt)
            break
        except ValueError:
            continue
    
    if not parsed_date:
        raise ValueError(f"无法识别的日期格式: {date_str}")
    
    # 缺年补当前年份
    if parsed_date.year == 1900:
        parsed_date = parsed_date.replace(year=datetime.now().year)
    
    # 输出MySQL要求的YYYY-MM-DD格式
    return parsed_date.strftime("%Y-%m-%d")

测试示例:

  • 输入 "12 Feb 2017" → 返回 "2017-02-12"
  • 输入 "05 April" → 返回 "2024-04-05"(假设当前年份为2024)
  • 输入 "5 04" → 返回 "2024-04-05"

额外说明:

如果你的用户群体有其他特定的日期格式,只需要往supported_formats列表里添加对应的格式字符串就行;如果缺年场景不想用当前年份,也可以改成固定年份(比如2000)或者让函数接收一个可选的年份参数。

内容的提问来源于stack exchange,提问作者Ghaiss

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 04:14:04