是否可以在收件人的时区显示时间?

Is it possible to display times in the recipient's timezone?

我有一个 webhook 可以将消息发布到 Slack 频道。有没有办法确保消息中提到的时间以用户的本地时区显示?

根据 slack API 文档,chat.postMessage 方法 returns 一个 JSON 与这里

类似的响应
{
    "ok": true,
    "ts": "1405895017.000506",
    "channel": "C024BE91L",
    "message": {
        ...
    }
}

所以,我想您可以解析并获取时间戳并根据需要对其进行格式化。这里是 link 到 slack api postMessage API documentation。顺便提一下,ts 是上述 JSON 响应中的时间戳。

似乎无法在共享频道中显示用户所在时区的日期。尽管 Linux 和 Android 的 Slack 客户端似乎都使用嵌入式浏览器作为其 UI 的平台,但我们无法 运行 JS客户端,这意味着我们不能做任何动态的事情,比如查找本地 TZ。

如果消息是直接发送给单个用户的消息,那么 codehat 的答案会起作用,但如果我们不希望频道消息和直接消息之间的时区不同。

Slack 的 API 允许您使用特殊占位符输出用户时区的时间。请参阅 API 文档中的 Formatting Dates

https://api.slack.com/reference/surfaces/formatting#date-formatting 中所述,您可以使用特殊日期表示法 <!date^timestamp^token_string^optional_link|fallback_text> 以使用查看器本地 TZ 显示时间。

GO 的一个片段,我用它来为 slack 设置时间格式:

func SlackFormat(t time.Time) string {
    return `<!date^` + strconv.FormatInt(t.Unix(), 10) + `^{date_num} {time}|` + t.Format(time.RFC3339) + `>`
}