如何将帖子数据从相对数据改为绝对数据

大家好:
我想将帖子数据格式修改为 YYYY-MM-DD HH:mm
在前端 JavaScript 中修改似乎不合理
1.我可以使用主题来覆盖这个时间吗?
2.我该如何在电子邮件中修改(现在只显示日期)?

1 个赞

所有日期格式以及其他文本均可自定义。请参阅此指南:

5 个赞

谢谢你的回复,David
我看到了这个自定义设置,但似乎在这里找不到。
我想将所有帖子的时间格式显示为绝对时间。例如,当前我的主题帖子“3h”显示为“12 May 17:33”


你知道有什么好方法可以将所有帖子数据更改为 YYYY-MM-DD HH:mm 格式,即使帖子发布了几分钟吗?

1 个赞

哦,我明白了!

在那种情况下,你可以尝试更改“相对日期持续时间”网站设置。

relative_date_duration: 发布后显示为相对日期(如7天)而非绝对日期(如2月20日)的天数。

所以我认为对于你的情况,你可以将其设置为 0

2 个赞

是的,
我已经将它设置为 0,但现在仍然不起作用。它需要一些时间还是我需要像更改域名后那样执行 rake posts:rebake

只需刷新页面即可生效。它是否带来了任何改变?现在你的发帖日期看起来怎样?

2 个赞

我已刷新页面,但仍显示“36”

并且设置是0

1 个赞

嗯,看起来距离现在不到 23.5 小时的时间戳总是会显示为相对时间,无论该设置如何:

因此,您对该设置的更改将应用于超过 1 天的帖子。但似乎我们目前没有办法改变一天以内内容的显示行为。

2 个赞

我看到了这个文件
discourse-main/app/assets/javascripts/discourse/app/components/post/meta-data/date.gjs

<template>
    <div class="post-info post-date">
      <a
        class={{concatClass
          "post-date"
          (if (and @post.wiki @post.last_wiki_edit) "last-wiki-edit")
        }}
        href={{@post.shareUrl}}
        title={{i18n "post.sr_date"}}
        {{on "click" this.showShareModal}}
      >
        <RelativeDate @date={{this.date}} />
      </a>
    </div>
  </template>

这是正确的模板吗,我可以通过主题组件来修改它吗?

不,您无法覆盖 .gjs 模板,不幸的是(旨在提高和鼓励覆盖的稳定性)

1 个赞

欢迎回来。@aksoforever

你在处理这个问题时进展如何?能不能告诉我们更多关于你的用例?

为什么你会想对你的成员设置如此长的绝对日期?"多久以前"的日期在视觉上更友好,还能传达你需要知道一则帖子有多旧的信息。将鼠标悬停在上面会显示明确的时间戳。

1 个赞

感谢您的关注 @tobiaseigen

是的,现在Discourse的显示非常现代和友好,更适合大多数人

只有少数经常使用它的人觉得使用绝对时间更快、更直接。

关于邮件中的时间,现在只显示月份和日份。
使用电子邮件查看信息并不用户友好,尤其是在查看多年前的信息时,没有显示年份。

1 个赞

我目前正在使用降级版的Discourse,并用组件重写前端代码

电子邮件在插件中使用以下内容,我可以从主题组件修改short_date吗?

after_initialize do
  if SiteSetting.custom_email_date_format_enabled
    module ::EmailHelper
      def short_date(datetime)
        china_time = datetime.in_time_zone("Asia/Shanghai")
        china_time.strftime("%Y-%m-%d %H:%M")
      end
    end
  end
end