Javascript 日期(根据地区分配)
这是我的一串,告诉我地区、时间和日期。我在一个discord机器人上使用它,并试图根据用户所在的区域使它们有所不同。我不知道如何做到这一点,但以视觉为例 上述代码返回给我-Javascript 日期(根据地区分配),javascript,date,discord,discord.js,Javascript,Date,Discord,Discord.js,这是我的一串,告诉我地区、时间和日期。我在一个discord机器人上使用它,并试图根据用户所在的区域使它们有所不同。我不知道如何做到这一点,但以视觉为例 上述代码返回给我- var d = new Date(); "**Zone** - `" + d.toTimeString().replace(/\d+:\d+:\d+\s+/, '').replace(/[G][M][T].\d+/, '') + "` **Time** - " + "`" + d.toL
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
有人有什么想法吗
EDIT:在我的一个新项目中,我发现了Intl.DateTimeFormat()
的用户,它本质上返回一个数组。此函数有一个名为.resolvedOptions()
的实例方法,它返回一个包含许多值的对象。我只是继续添加了.timezone
,它返回了类似于“澳大利亚/昆士兰”的内容。
var region=Intl.DateTimeFormat().resolvedOptions().timeZone代码>
我假设此代码在浏览器中运行,而不是在服务器中运行
您不能依靠d.toTimeString()
和剪切时区部分来查找时区,toTimeString
可以在不同的浏览器上返回不同的格式。规范将格式设置留给了浏览器供应商
您可以获取timezoneOffset
并将其映射到时区名称,但请稍候,出现问题。这可能与区域的日光节约时间设置冲突。所以你们需要一组全世界夏令时的历史数据
如果您确实想这样做,请使用,它可以为您执行查找,并且他们已经为您创建了包括DST在内的所有映射。此代码是运行在服务器端还是客户端?例如。如果它是由Node.js在某台服务器上运行的,那么每个服务器的结果都是相同的,因为JavaScript占用服务器的时间。在Discord服务器中,您如何知道用户来自哪个区域?你有没有关于这些信息的数据库?因为这不是可以直接从Discord API访问的。这是针对Discord机器人的。我不相信你可以在浏览器上运行bot。请注意,这将指定和的格式,尽管在使用中的浏览器支持无处不在可能需要一段时间。
Zone - (AMERICA Western Standard Time) Time - 02:29:09 Date - 2018-5-18