jb/scripts/时间戳.py
2025-06-05 17:19:20 +08:00

59 lines
2.3 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

from datetime import datetime
import pytz
from typing import List
# 预缓存常用时区
TIMEZONE_CACHE = {
"Asia/Shanghai": pytz.timezone("Asia/Shanghai"),
"UTC": pytz.timezone("UTC"),
"America/New_York": pytz.timezone("America/New_York"),
"Europe/London": pytz.timezone("Europe/London"),
"Australia/Sydney": pytz.timezone("Australia/Sydney")
}
def process(input_strings: List[str]) -> List[str]:
"""处理时间戳和文本的相互转换"""
try:
if len(input_strings) != 3:
return ["错误:输入格式不正确,期望 [mode, input, timezone]"]
mode, input_str, timezone = input_strings
# 从缓存获取时区
tz = TIMEZONE_CACHE.get(timezone)
if not tz:
return ["错误:无效的时区"]
if mode == "timestamp_to_text":
try:
timestamp = int(input_str)
dt = datetime.fromtimestamp(timestamp, tz=tz)
return [dt.strftime("%Y-%m-%d %H:%M:%S %Z")]
except ValueError:
return ["错误:请输入有效的时间戳"]
elif mode == "text_to_timestamp":
try:
# 检查是否以 UTC 结尾
input_str = input_str.strip()
use_utc = input_str.endswith(" UTC")
if use_utc:
input_str = input_str[:-4].strip() # 移除 " UTC"
tz = TIMEZONE_CACHE["UTC"] # 强制使用 UTC 时区
# 尝试解析三种格式
try:
dt = datetime.strptime(input_str, "%Y-%m-%d %H:%M:%S")
except ValueError:
try:
dt = datetime.strptime(input_str, "%Y年%m月%d%H:%M:%S")
except ValueError:
# 解析新格式MMM-DD-YYYY HH:MM:SS AM/PM
dt = datetime.strptime(input_str, "%b-%d-%Y %I:%M:%S %p")
dt = tz.localize(dt)
return [str(int(dt.timestamp()))]
except ValueError:
return ["错误请输入有效的日期格式YYYY-MM-DD HH:MM:SS 或 YYYY年MM月DD日 HH:MM:SS 或 MMM-DD-YYYY HH:MM:SS AM/PM"]
return ["错误:无效的转换模式"]
except Exception as e:
return [f"错误:{str(e)}"]