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

如何转换时间格式、自动生成结束时间并批量生成日历添加链接?

时间转换与批量生成日历事件链接方案

核心问题解决:12小时制时间转UTC日历格式

你需要把「MM/DD/YYYY HH:MM AM/PM」格式的本地时间,转换为Google Calendar要求的「YYYYMMDDTHHMMSSZ」UTC格式,步骤和代码实现如下:

转换逻辑

  1. 解析输入时间:拆分出月、日、年、12小时制的时、分、上下午标识
  2. 12小时转24小时制:
    • 若为PM:小时数为小时+12(12PM保持12不变)
    • 若为AM:小时数为小时(12AM转为00)
  3. 本地时间转UTC:根据输入时间的时区,转换为UTC时间(比如示例中输入为印度标准时间IST,比UTC早5.5小时,04:00 PM IST转UTC后就是10:30 AM,对应20220806T103000Z)
  4. 格式化输出:按YYYYMMDDTHHMMSSZ拼接字符串

Python代码实现(单条转换)

from datetime import datetime
import pytz

def convert_to_calendar_time(input_time_str, timezone_str="Asia/Kolkata"):
    # 解析12小时制输入时间
    local_time = datetime.strptime(input_time_str, "%m/%d/%Y %I:%M %p")
    # 绑定输入时间的时区
    tz = pytz.timezone(timezone_str)
    local_time = tz.localize(local_time)
    # 转换为UTC时间并格式化
    utc_time = local_time.astimezone(pytz.utc)
    return utc_time.strftime("%Y%m%dT%H%M%SZ")

# 示例转换
start_input = "06/08/2022 04:00 PM"
end_input = "06/08/2022 04:45 PM"
print(convert_to_calendar_time(start_input))  # 输出:20220806T103000Z
print(convert_to_calendar_time(end_input))    # 输出:20220806T111500Z

自动生成结束时间

如果不需要手动输入结束时间,可在开始时间基础上添加默认时长(比如45分钟):

from datetime import timedelta

def get_end_time(start_input, duration_minutes=45, timezone_str="Asia/Kolkata"):
    tz = pytz.timezone(timezone_str)
    local_start = tz.localize(datetime.strptime(start_input, "%m/%d/%Y %I:%M %p"))
    local_end = local_start + timedelta(minutes=duration_minutes)
    utc_end = local_end.astimezone(pytz.utc)
    return utc_end.strftime("%Y%m%dT%H%M%SZ")

# 示例:自动生成结束时间
end_time = get_end_time(start_input)
print(end_time)  # 输出:20220806T111500Z

批量生成日历链接

准备好批量输入的时间列表(可从CSV或文本文件读取),循环生成每个事件的Google Calendar链接:

def generate_calendar_link(start_time_str, event_title, duration_minutes=45, timezone_str="Asia/Kolkata"):
    start_cal = convert_to_calendar_time(start_time_str, timezone_str)
    end_cal = get_end_time(start_time_str, duration_minutes, timezone_str)
    # 构造Google Calendar模板链接
    base_url = "https://www.google.com/calendar/render?action=TEMPLATE"
    title_param = f"&text={event_title.replace(' ', '%20')}"
    dates_param = f"&dates={start_cal}/{end_cal}"
    return f"{base_url}{title_param}{dates_param}&details=&location="

# 批量生成示例
batch_inputs = [
    {"time": "06/08/2022 04:00 PM", "title": "Interview with Mark Zuckerberg"},
    {"time": "06/09/2022 10:30 AM", "title": "Team Sync Meeting"},
    {"time": "06/10/2022 02:15 PM", "title": "Client Demo"}
]

for item in batch_inputs:
    link = generate_calendar_link(item["time"], item["title"])
    print(f"{item['title']} 链接:{link}")

注意事项

  • 务必明确输入时间的时区,否则UTC转换会出错,可根据实际需求修改timezone_str参数(比如美国东部时区用America/New_York)
  • 如果不需要UTC转换(事件仅针对本地时区),可去掉时区转换步骤,直接格式化本地时间,但Google Calendar默认会按用户时区解析,建议统一用UTC避免混乱

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 12:36:32