let d = new Date();
怎么通过时区名更改时区:比如’US/Central‘ ‘America/Los_Angeles’ (后台只返回时区名字)
而且有没有全局更改当前timezone的操作?
使用moment.js,看看官网地址https://momentjs.com/timezone/%E3%80%82
如果有帮助,忘采纳!
只能自己根据时区来处理 加减 时间差
只有服务器可以更改当前的系统默认时区,其他的都是程序中修改
将某一指定时区的时间转换成UTC时间
var date = new Date("2019-04-21 21:00:00 EDT"); //不指定时区默认为当前系统设置的时区
var utcDate = date.toUTCString();
console.log(utcDate); // "Mon, 22 Apr 2019 01:00:00 GMT"
// 注意,这里的utcDate是时间字符串,不能直接使用getFullYear()等方法
将某一指定时区的时间转换成当前用户所在时区对应的时间
new Date("2019-04-21 21:00:00 EDT");
将UTC时间转换当前用户所在时区对应的时间
new Date("2019-04-21 21:00:00 GMT");
// 或 new Date("2019-04-21 21:00:00 UTC");
你首先定义’US/Central‘ ‘America/Los_Angeles’ 的区域
比如印度时间是Indian 5.5
然后根据名称获取时区
然后用下面代码
var timezone = 5.5; //印度时间是 5.5 东八区是8
var offset_GMT = new Date().getTimezoneOffset(); // 本地时间和格林威治的时间差,单位为分钟
var nowDate = new Date().getTime(); // 本地时间距 1970 年 1 月 1 日午夜(GMT 时间)之间的毫秒数
var targetDate = new Date(nowDate + offset_GMT * 60 * 1000 + timezone * 60 * 60 * 1000);
console.log("印度现在是:" + targetDate);
var d=new Date();
var localTime = d.getTime();
var localOffset=d.getTimezoneOffset()*60000; //getTimezoneOffset()返回是以分钟为单位,需要转化成ms
var utc = localTime + localOffset;
var offset =9; //以韩国时间为例,东9区
var korean= utc + (3600000*offset);
var nd = new Date(korean);
console.log("Korean time is " + nd.toLocaleString());
你这个应该是海外站,在大陆进行调试会有写别扭 因此可以两个方案
1.通过地址模拟 到国外 通过Date() 函数 toLocaleString 之类的函数处里 不过每个地方的运行程序代码有差异 不可控
2.还有一种就是 所以时间转成 国际时间 同不同地方的时区 进行转换 自己维护一个时区表 例如:大陆和UTC相隔 8个小时 进行转换
JavaScript Result
new Date Mon Feb 13 2017 00:00:00 GMT+0800 (CST)
toDateString Mon Feb 13 2017
toGMTString Sun, 12 Feb 2017 16:00:00 GMT
toISOString 2017-02-12T16:00:00.000Z
toJSON 2017-02-12T16:00:00.000Z
toLocaleDateString 2/13/2017
toLocaleTimeString 12:00:00 AM
toLocaleString 2/13/2017, 12:00:00 AM
toString Mon Feb 13 2017 00:00:00 GMT+0800 (CST)
toTimeString 00:00:00 GMT+0800 (CST)
toUTCString Sun, 12 Feb 2017 16:00:00 GMT
忽略时区,直接传UTC时间即可。
推荐使用moment.js。
最好先描叙你想实现什么功能,然后举例说明。
可以指定时区