Javascript将UTC转换为本地时间

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

好的,假设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 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

这适用于ChromeFirefox
未在其他浏览器上测试

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