【发布时间】:2026-01-07 20:50:01
【问题描述】:
我有一个向 Slack 频道发布消息的 webhook。有没有办法确保消息中提到的时间显示在用户的本地时区?
【问题讨论】:
-
您的意思是查看邮件的每个人都可能会看到不同的文本吗?我很确定答案是否定的。
标签: slack-api
我有一个向 Slack 频道发布消息的 webhook。有没有办法确保消息中提到的时间显示在用户的本地时区?
【问题讨论】:
标签: slack-api
Slack 的 API 允许您使用特殊的占位符在用户的时区中输出时间。请参阅 API 文档中的 Formatting Dates。
【讨论】:
根据 slack API 文档,chat.postMessage 方法返回一个 JSON,并在此处返回类似这样的响应
{
"ok": true,
"ts": "1405895017.000506",
"channel": "C024BE91L",
"message": {
...
}
}
所以,我想您可以根据需要解析并获取时间戳并对其进行格式化。这是 slack api postMessage API documentation 的链接。顺便提一下,ts是上述 JSON 响应中的时间戳。
【讨论】:
似乎无法在共享频道中以用户的时区显示日期。尽管 Linux 和 Android 的 Slack 客户端似乎都在使用嵌入式浏览器作为其 UI 的平台,但我们无法在客户端上运行 JS,这意味着我们无法做任何动态的事情,比如看提升本地 TZ。
如果消息是发给单个用户的直接消息,那么 codehat 的答案会起作用,但如果我们不希望频道消息和直接消息之间的时区不同。
【讨论】:
如https://api.slack.com/reference/surfaces/formatting#date-formatting 中所述,您可以使用特殊的日期符号<!date^timestamp^token_string^optional_link|fallback_text> 来使用查看器本地 TZ 显示时间。
我用来格式化 slack 时间的 GO 的 sn-p :
func SlackFormat(t time.Time) string {
return `<!date^` + strconv.FormatInt(t.Unix(), 10) + `^{date_num} {time}|` + t.Format(time.RFC3339) + `>`
}
【讨论】: