关于java:在客户端/用户时区的电子邮件内容/正文中显示日期/时间/小时

Showing date/time/hour in email content/body in client/user time zone

我有用Java编写的Web应用程序。 它使用Spring和Freemarker从模板和Spring JavaMailSender发送电子邮件以发送它们。

我在其内容中发送包含时间的电子邮件。 问题是服务器在UTC + 00时区存储时间,客户端可能有不同的时区,例如UTC + 03。 例如,在电子邮件内容中有20/07/2017 11:30(UTC + 00),但收件人需要20/07/2017 14:30(UTC + 03)。

我的问题是:是否可以在客户端时区显示电子邮件内容的时间,而无需在服务器端提供有关其时区的信息? 有没有例如一些技巧告诉电子邮件客户解释他的时区给定时间?


小规模研究后我自己的答案:

没有"真实解决方案"在电子邮件中显示用户时区的时间而没有关于他在后端的时区的信息,但有一些解决方法

说明:

  • 所有现代电子邮件客户端都会过滤掉Javascript内容,因此不会
    可以制作一个脚本,根据时间显示时间
    客户时区
  • 没有"魔术特工"给电子邮件客户端一些线索
    html的一部分包含时间,它应该合理地格式化
    办法。特别是Gmail没有这样的功能

解:

将用户时区存储在后端(我们向其发送电子邮件的用户)。

他们的时区可以通过两种方式保存:

  • Statically - 有一个地方(输入),用户在其中指定他的时区。例如,首先登录或/和"设置"菜单中。
  • Dynamically - 用户时区是在他不知情的情况下动态获得的。例如,在通过Javascript获取每个登录用户时区后,发送到后端并保存在数据库中。

解决方法:

出于某种原因,您不想实施"真正的解决方案",有一些解决方法

  • 最简单的方法是显示时间旁边有关时区的信息。
    例如,20/07/2017 11:30提供的信息不足,因为我们不知道时区,但20/07/2017 11:30 (UTC+03)提供了用户需要的所有信息。如果他想在自己的时区里度过时间,他只需要自己做数学计算。

  • 稍微复杂的做法是提供指向网页的链接,该链接在客户时区显示时间并获得参数时间。
    例如:
    https://some-time-resolving-service.com/time/20-07-2017/11/30
    使用Javascript检查客户端时区,并根据参数和时区显示网站的时间。
    互联网上有提供此类功能的服务。例如https://www.timeanddate.com/worldclock/,松散团队在其状态站点上用于显示读者时区中的事件,中断等时间。示例:https://www.timeanddate.com/worldclock/fixedtime.html?iso = 20181108T0035& p1 = 224我从此事件中获取:https://status.slack.com/2018-11/8abae7811317864c。

  • 与第二点相同,但不是提供链接嵌入图像并使用返回图像的服务。
    像那样:
    Time in the right timezone
    或者像那样:
    <5233>。
    我不确定它是否有效。