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

35g0bw71  于 2023-01-04  发布在  Java
关注(0)|答案(5)|浏览(188)

在javascript中,我想把我的本地时区偏移量比如-04:00作为一个字符串,我该怎么做呢?
谢啦,谢啦

myss37ts

myss37ts1#

您可以使用Date对象执行此任务。

let offset = new Date().getTimezoneOffset()

现在你有了一个像-120这样的字符串,你可以根据自己的喜好设置格式。你可以除以60得到小时数,然后使用+或push:

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>

我不处理00:XX以防它们存在。

7rtdyuoh

7rtdyuoh2#

我创造了一个函数...

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);
}

你可以传递一个Date对象,如果你不这样做,就会创建一个对象。
timezoneOffset以整数分钟为单位:格林尼治标准时间以东=负值,以西=正值。
sign是偏移的相反值。
minutesabs =我们已经得到了符号,让我们来处理绝对值。
hours-60分钟的整数倍。
minutes-提醒你减去60个小时是什么。可以用%来做,这是一个偏好的问题。
return -

  • 符号是字符串:“+”或“-”
  • (“0”+小时)现在是一个字符串:7变成“07”,11变成“011”,这就是为什么:
  • .slice(-2)返回最后2个字符:“07”返回的就是这个,“011”返回的是“11”。
  • 分钟内相同。
  • 以及“:“。

您可以通过将date.getTimezoneOffset()替换为数字来手动测试不同的timezoneOffset值。

fjaof16o

fjaof16o3#

下面是一个可能的解决方案:

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。

wpcxdonn

wpcxdonn4#

这似乎是工作...

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

ukxgm1gy5#

下面是我的解决方案:不要自己做除法来得到小时数,而只需使用date对象中已有的功能:

const date = new Date();
    const tzOffsetNumber = date.getTimezoneOffset();
    const tzDate = new Date(0,0,0,0,Math.abs(tzOffsetNumber));
    console.log(`${ tzOffsetNumber > 0 ? '-' : '+'}${tzDate.getHours()}:${("" + tzDate.getMinutes()).padStart(2,'0')}`)

相关问题