Javascript将UTC转换为本地时间
好的,假设JSON解析字符串UTC date,如下所示:Javascript将UTC转换为本地时间,javascript,datetime,Javascript,Datetime,好的,假设JSON解析字符串UTC date,如下所示: 2012-11-29 17:00:34 UTC 现在,如果我想将这个UTC日期转换为我的本地时间,我该怎么做 如何将其格式化为其他格式,如yyyy-MM-dd HH:MM:ss z 此date.toString('yyyy-MM-dd HH:MM:ss z')永远无法解决:/尝试: var date = new Date('2012-11-29 17:00:34 UTC'); date.toString(); 这应该行得通 var d
2012-11-29 17:00:34 UTC
现在,如果我想将这个UTC日期转换为我的本地时间,我该怎么做
如何将其格式化为其他格式,如yyyy-MM-dd HH:MM:ss z
此date.toString('yyyy-MM-dd HH:MM:ss z')代码>永远无法解决:/尝试:
var date = new Date('2012-11-29 17:00:34 UTC');
date.toString();
这应该行得通
var date = new Date('2012-11-29 17:00:34 UTC');
date.toString()
offset
将是从本地时间到UTC的时间间隔(以分钟为单位)。要从UTC日期中获取本地时间,您需要从日期中减去分钟数
utc_date.setMinutes(utc_date.getMinutes() - offset);
要设置日期格式,请尝试以下功能:
var d = new Date();
var fromatted = d.toLocaleFormat("%d.%m.%Y %H:%M (%a)");
但它的缺点是,它是一个非标准的功能,在Chrome中不起作用,但在FF(afaik)中起作用
克里斯上述解决方案是正确的,但可能会在FireFox和Safari中崩溃!这就是我们试图解决的问题。检查toUTC
功能,它可以在大多数主浏览器上工作,并以ISO格式返回时间您可以查看api以方便日期操作
let now=date.format(新日期(),'YYYY-MM-DD HH:MM:ss',true);
console.log(现在)代码>
这里是另一个输出mm/dd/yy的选项:
const date = new Date('2012-11-29 17:00:34 UTC');
date.toLocaleString();
//output 11/29/2012
这适用于Chrome和Firefox
未在其他浏览器上测试
const convertToLocalTime=(dateTime,notStanderdFormat=true)=>{
if(dateTime!==null&&dateTime!==未定义){
if(非标准格式){
//2021-02-21 04:01:19的工程
//转换为当地时间之前,先转换为2021-02-21T04:01:19.000000Z格式
const splited=dateTime.split(“”);
让convertedDateTime=`${splited[0]}T${splited[1]}.000000Z`;
const date=新日期(convertedDateTime);
返回日期。toString();
}否则{
//2021-02-20T17:52:45.000000Z或1613639329186的工程
const date=新日期(dateTime);
返回日期。toString();
}
}否则{
返回“未知”;
}
};
//试验
console.log(convertToLocalTime('2012-11-29 17:00:34 UTC')
新日期(“2012-11-29 17:00:34 UTC”)
将在使用页面的客户端的本地时间。您可以使用空格或符号将其拆分为数组。假设您这样做。拆分(“”)并形成日期和时间以及“utc”的数组。然后像这样再拆分一次。拆分(“-”)并像这样拆分时间。拆分(“:”)等等。只适用于在这里搜索的任何人。值得记住的是,在MYSQL中,绝对完美地转换到任何时区都是非常容易的(这包括对夏令时的完美照顾)。因为几乎所有的数据都来自服务器上的mysql,所以有必要记住这一点!无效日期?使用日期格式为yyyy MM dd HH:MM:ss2012/11/29的Date.js库这只适用于chrome浏览器,在mozilla firefox和IE11中不起作用。你有任何其他浏览器的解决方案吗?似乎很愚蠢,Date
原型上没有一个方法在本地时间而不是GMT/UTCI中返回日期对象。我认为应该是减去偏移量,而不是添加偏移量。+是合适的,因为如果时区落后1小时,返回的值将是-60。@OnResolve Surabhi使用+
是正确的。使用date.getTimezoneOffset
时,“getTimezoneOffset()的负返回值表示当前位置在UTC之前,而正值表示该位置在UTC之后。”()。至少在chrome中,这是错误的。即使是负时区也会以正数返回。@Surabhi@webflower这一解释说明了为什么在这里使用+
是不正确的。从getTimezoneOffset()
返回的值是您需要添加到本地时间才能到达UTC的值。因此,如果您想从UTC转到本地时间,则操作需要是-
。基本上,这个答案与请求相反,从本地时间转换为utc。不!不是在狩猎中。
/*
* convert server time to local time
* simbu
*/
function convertTime(serverdate) {
var date = new Date(serverdate);
// convert to utc time
var toutc = date.toUTCString();
//convert to local time
var locdat = new Date(toutc + " UTC");
return locdat;
}
const date = new Date('2012-11-29 17:00:34 UTC');
date.toLocaleString();
//output 11/29/2012