需使用何种正则表达式提取并替换Discord的<t:时间戳:R>格式内容
提取并替换Discord时间格式为可读相对时间
正则表达式
使用以下正则表达式匹配并提取<t:1583277337:R>格式的内容:
<t:(\d+):R>
- 括号内的
(\d+)会捕获以秒为单位的Unix时间戳,为后续转换提供数据。
替换实现示例(Python)
以下是完整的处理流程代码,可直接用于替换文本中的Discord时间格式:
import datetime import re def replace_discord_relative_time(text): pattern = r'<t:(\d+):R>' def convert_timestamp(match): timestamp = int(match.group(1)) target_time = datetime.datetime.fromtimestamp(timestamp, datetime.timezone.utc) now = datetime.datetime.now(datetime.timezone.utc) delta = now - target_time # 按时间差粒度生成中文相对时间 if delta.days >= 365: return f"{delta.days // 365}年前" elif delta.days >= 30: return f"{delta.days // 30}个月前" elif delta.days >= 7: return f"{delta.days // 7}周前" elif delta.days >= 1: return f"{delta.days}天前" elif delta.seconds >= 3600: return f"{delta.seconds // 3600}小时前" elif delta.seconds >= 60: return f"{delta.seconds // 60}分钟前" else: return "刚刚" return re.sub(pattern, convert_timestamp, text)
使用示例
sample_bio = "𝖓𝖔𝖙 𝖊𝖛𝖊𝖗𝖞𝖔𝖓𝖊 𝖜𝖎𝖑𝖑 𝖇𝖊𝖑𝖎𝖊𝖛𝖊 𝖎𝖓 𝖞𝖔𝖚, 𝖇𝖚𝖙 𝖓𝖔𝖙 𝖊𝖛𝖊𝖗𝖞𝖔𝖓𝖊 𝖒𝖆𝖙𝖙𝖊𝖗𝖘...\n\n<t:1583277337:R> <3" processed_text = replace_discord_relative_time(sample_bio) print(processed_text)
输出结果示例:
𝖓𝖔𝖙 𝖊𝖛𝖊𝖗𝖞𝖔𝖓𝖊 𝖜𝖎𝖑𝖑 𝖇𝖊𝖑𝖎𝖊𝖛𝖊 𝖎𝖓 𝖞𝖔𝖚, 𝖇𝖚𝖙 𝖓𝖔𝖙 𝖊𝖛𝖊𝖗𝖞𝖔𝖓𝖊 𝖒𝖆𝖙𝖙𝖊𝖗𝖘...
5年前 <3
关键说明
- 采用UTC时区计算时间差,避免本地时区差异导致的误差
- 可根据需求调整时间粒度(比如增加/减少时间单位的判断)
- 若需适配其他Discord时间格式(如
<t:XXX:F>),只需修改正则表达式末尾的格式标识
内容的提问来源于stack exchange,提问作者Rixqi
相关产品推荐
相关产品推荐

