我正在开发一个拥有来自世界各地的用户的平台,但某些设置会绑定到预定义的时区日期时间。
这是什么意思?如果用户从不同的时区连接,应用程序仍应向他显示他登录的预定义时区内的当前时间。我需要在客户端使用仅包含时区字符串的javascript计算此值。
我想做的是这样的事情:
date_format = ifelse(grepl("\\d{4}-\\d{2}-\\d{2} ", SMS.Date), "ymd", "mdy")
,结果应该是该时区的当前日期时间。
我知道有一些JS库可以解决这个问题,但我想问一下是否有一个简单的JS解决方案而不使用外部库?
答案 0 :(得分:2)
取决于你对简单的定义;但不是真的。 Javascript不支持开箱即用的时区。我强烈推荐Moment Timezone http://momentjs.com/timezone/,因为它非常友好。我也处于具有相同要求的项目中,这个库使我的工作变得更加容易。
编辑: 使用库,按照以下要求做你想做的事情:
var timezonedDate = moment.tz('YOUR TZ STRING').toDate();
答案 1 :(得分:1)
您可以尝试:
var offset = new Date().getTimezoneOffset();
或者以小时计算差异:
var x = new Date();
var currentTimeZoneOffsetInHours = x.getTimezoneOffset() / 60;
时区偏移是UTC和之间的差异,以分钟为单位 当地时间。请注意,这意味着如果偏移是正数 当地时区落后于UTC,如果未来则为负。例如, 如果您的时区是UTC + 10(澳大利亚东部标准时间), - 600 将被退回。夏令时会阻止此值 即使对于给定的区域设置也是常量。