javascript - 日期(根据地区分配)

标签 javascript date discord discord.js

 var d = new Date();
    "**Zone** - `" + 
    d.toTimeString().replace(/\d+:\d+:\d+\s+/, '').replace(/[G][M][T].\d+/, '') + 
    "` **Time** - " +
    "`" + d.toLocaleTimeString() +
    "` **Date** - " + "`" + 
    d.toLocaleDateString() + "`"

这是我的一个字符串,它告诉我区域、时间和日期。我在一个不和谐的机器人上使用它,并试图让它们根据用户所在的区域而有所不同。我不知道如何实现这一点,但对于视觉示例......

上述代码返回我 -

Zone - (AUS Eastern Standard Time) Time - 16:49:28 Date - 2018-5-18

对此我很满意,但是,对于一次测试,我让一位外国 friend 跳上来,当我试图使结果是他们所在的地区时,它发送了相同的内容,所以......

Zone - (AMERICA Western Standard Time) Time - 02:29:09 Date - 2018-5-18

有人有什么想法吗?

编辑:在我的一个新项目中,我发现 Intl.DateTimeFormat() 的用户本质上返回一个数组。该函数有一个名为 .resolvedOptions() 的实例方法,返回一个包含多个值的对象。我只是继续添加 .timezone ,它返回类似于“澳大利亚/昆士兰”的内容。 varregion = Intl.DateTimeFormat().resolvedOptions().timeZone;

最佳答案

I am assuming this code is run in a browser, and not in a server.

您不能依赖d.toTimeString()并删除时区部分来查找时区,toTimeString可以在不同的浏览器上返回不同的格式。该规范将格式留给了浏览器 vendor 。

您可以获取timezoneOffset并将其映射到时区名称,但是等等,有一个问题。这可能与地区的夏令时设置冲突。因此,您将需要一组世界各地夏令时的历史数据。

如果您确实想这样做,请使用 moment with timezones ,它可以为您进行查找,并且他们已经为您创建了包括 DST 在内的所有映射。

关于javascript - 日期(根据地区分配),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50405552/

相关文章:

javascript - 能够通过内容的 url 控制 iframe 大小的内容 - javascript 可以利用这一点

javascript - jquery 从索引中选择行

javascript - 如何在 magnific popup 插件的弹出窗口中打开弹出窗口

vba - EXCEL VBA : comparing day & month only from all the date

javascript - 掷骰子。 DND,将数组中的数字加在一起

javascript - Discordjs 我如何发送带有多链接的嵌入消息

javascript - 从 Ajax 调用 Jquery 访问数据

iphone - 计算本周的第一天和最后一天

r - 如何创建特定月份和/或日期序列 "n"次

javascript - 参数在第一个单词后被切片 | Discord.js