Javascript 浏览器和服务器的时区差异

Javascript 浏览器和服务器的时区差异,javascript,php,momentjs,Javascript,Php,Momentjs,我一直在使用momentjs来检测用户(客户端)的时区。我有PHPtimezone\u identifiers\u list()函数用于服务器时区列表 我现在面临的问题是,momentjs将时区返回为“亚洲/加尔各答”,PHP将其返回为“亚洲/加尔各答”。两者都一样,但给我一个相反的效果 有什么办法可以把这两个都匹配起来吗?任何帮助都将不胜感激。尝试使用UTC,然后根据位置增加或减少开/关时间 我没有使用过moment.js,但看看文档,似乎你可以在祖鲁时间中获得时间 dec.tz('Asia/

我一直在使用momentjs来检测用户(客户端)的时区。我有PHP
timezone\u identifiers\u list()
函数用于服务器时区列表

我现在面临的问题是,momentjs将时区返回为“亚洲/加尔各答”,PHP将其返回为“亚洲/加尔各答”。两者都一样,但给我一个相反的效果


有什么办法可以把这两个都匹配起来吗?任何帮助都将不胜感激。

尝试使用UTC,然后根据位置增加或减少开/关时间

我没有使用过moment.js,但看看文档,似乎你可以在祖鲁时间中获得时间

dec.tz('Asia/Calcutta').format('ha z');
// where dec is your moment time.
在php中也可以这样做

echo gmdate('H', strtotime(time()));
// this should return the + or - hours your server time is from UTC/zulu

有了这两个值,您就可以计算出它在用户处的时间。

我倾向于在绝对必要的情况下只使用javascript中的日期对象。如果您认为可以通过PHP简单地处理日期信息,这可能会省去您的头疼。否则,我会推荐@CodingNoob所说的“给我一个相反的效果”是什么意思?这两个区域是相同的,一个只是另一个的别名。那么你在moment.js端使用了什么代码呢?moment js的代码
var browser_timezone=moment.tz.guess()
,这给了我输出'Asia/Calcutta',我有一个php变量,它给了我输出'Asia/Kolkata',这是来自
时区标识符列表()的输出。
。因此,基本上两者都是相同的,但拼写不同导致了我的问题。它给用户一条警告消息,说“时区不同”。我希望你现在明白了我们确实明白了,但请理解我们在说什么。不要比较字符串。将时区作为值进行比较。加尔各答在时区+5:30。你的意思是时区偏移值?你能给我一个参考链接或什么吗?这真的很有帮助,谢谢。但我真正需要的是,如果服务器和客户端之间存在时区差异,则向用户显示一条警报消息。我正在检查php返回的时区和js one。然后这个拼写错误出现了。对于解决这个问题,您有什么建议吗?上面的代码没有将时区视为名称,而是视为时间值。伦敦是0,中欧是1,东欧是2等等。@akhil我的解释够了吗?@akhil我不知道怎么解释。你想让我解释一下行星是如何自转的,以及它与时间的关系吗?考虑到您提供给我们的代码信息非常少,我唯一能帮助您的是:将时间值(如上面的代码所示)从php传递到javascript。将time值从moment.js保存到javascript变量。然后它只是一个“如果”和一个“警告”,你的任务就完成了。