如何在javascript中获取时区偏移?

如何在javascript中获取时区偏移?,javascript,timezone,Javascript,Timezone,在javascript中,我希望以字符串形式获取本地时区偏移量,例如-04:00。我该怎么做 谢谢您可以将日期对象用于此任务 let offset = new Date().getTimezoneOffset() 现在你得到了一个像-120这样的字符串,你可以随意格式化。您可以除以60得到小时数,然后使用+或推送: offset = (offset / 60) + ":00"; 一行: new Date().getTimezoneOffset() / 60 + "

在javascript中,我希望以字符串形式获取本地时区偏移量,例如
-04:00
。我该怎么做


谢谢

您可以将日期对象用于此任务

let offset = new Date().getTimezoneOffset()
现在你得到了一个像-120这样的字符串,你可以随意格式化。您可以除以60得到小时数,然后使用+或推送:

offset = (offset / 60) + ":00";
一行:

new Date().getTimezoneOffset() / 60 + ":00";
编辑:因为你似乎有问题,我给你做了一个可以测试的代码示例

<html>
<body>
<script>
let offset = new Date().getTimezoneOffset() / 60;

if (offset >= 0 && offset < 10) {
  offset = "0" + offset;
} else if (offset > -10) {
  offset = "-0" + offset.toString().substr(1);
} else {
  offset = "00";
}
offset += ":00";

alert(offset);

</script>
</body>
</html>

让偏移量=新日期().getTimezoneOffset()/60;
如果(偏移量>=0&&offset<10){
偏移量=“0”+偏移量;
}否则如果(偏移量>-10){
offset=“-0”+offset.toString().substr(1);
}否则{
offset=“00”;
}
偏移量+=“:00”;
警报(偏移);

如果00:XX存在,我不会处理它们。

这里有一个可能的解决方案:

const date = new Date()    
const offset = date.getTimezoneOffset()
const sign = offset >= 0 ? '-' : '+'
const hours = Math.abs(offset / 60)
const minutes = Math.abs(offset % 60)
const hoursStr = `0${hours}`.slice(0, 2)
const minutesStr = `0${minutes}`.slice(0, 2)
console.log(`${sign}${hoursStr}:${minutesStr}`)

请注意,并非所有时区都在小时结束。有些国家使用半小时时区,如+03:30。

我创建了一个函数

function timezone(date=new Date()) {
  var timezoneOffset=date.getTimezoneOffset();
  var sign=(timezoneOffset<0)?"+":"-";
  var minutes=Math.abs(timezoneOffset);
  var hours=Math.floor(minutes/60);
  minutes=minutes-60*hours;
  return sign+("0"+hours).slice(-2)+":"+("0"+minutes).slice(-2);
}
功能时区(日期=新日期(){
var timezoneOffset=date.getTimezoneOffset();
变量符号=(时区偏移这似乎有效

function getTimeZoneOffset() {
    var t = new Date().toString().match(/[-\+]\d{4}/)[0];
    return t.substring(0,3) + ":" + t.substr(3);
}

d1=new Date();d1.toString();/“2007年7月7日星期二2020 00:24:46 GMT+0200”
这可以解决您的问题吗?不完全可以,我希望以这种格式获取字符串值。它返回一个数字。对我来说,应该是“-4”时它会给我“4”。除了我的示例之外,您还做了一些错误的事情。至少在我的示例中是打印-2:00。在执行比较或一般操作时,请小心隐式类型关联。使用==,!=,==,==。如果
new Date()。getTimezoneOffset()
为负数,时区为正数,反之亦然。它表示应将多少分钟添加到本地时间以获得GMT/UTC。纽约是“-05:00”和
新日期()。getTimezoneOffset()
将返回
300
分钟==5小时。以色列是“+02:00”和
新日期()。getTimezoneOffset()
将返回
-180
=-3小时。纽约落后于格林尼治标准时间,以色列领先于格林尼治标准时间。所有的
常数是怎么回事?我得到
-0
几分钟了…@iAmOren很好地理解了-0。小时和分钟都必须是绝对值。我不确定我是否理解你关于常数的问题。你的意思是为什么要使用
常数
,而不是
let
var
?或者为什么要声明所有这些变量?当我复制粘贴代码以签入开发工具时,如果它包含
const
s,我就无法对其进行编辑。有时我忘了删除它们,所以我必须打开一个新的开发工具选项卡。
let
在这方面更好。我永远不会使用这两种方法:“to <代码> var <代码> >或不>代码> var >代码>(对我来说):“永远只有“代码> var“/>代码>我的逻辑:为什么JavaScript是一种松散的语言——为什么代码> const <代码> RIT????):)有人想要一种类型的代码> var >代码>永远不会改变?-C++!找到了一个工作:在代码<代码> {`}中缠绕代码
-但我无法获得
var
iable的值…好吗?回答得好?如果是-请选择并向上投票,谢谢!