Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将时区更改为其他时区_Javascript_Date_Timezone - Fatal编程技术网

Javascript 将时区更改为其他时区

Javascript 将时区更改为其他时区,javascript,date,timezone,Javascript,Date,Timezone,我有一个表单,用户在其中选择日期、时间和时区 例如: let date = '02.09.2020'; let time = '16.00'; let timezone = '-07.00'; 我想用时区转换此日期:“+02.00” 我有一个隐藏的文本输入,我在其中传递我想要的实现日期格式 我不想在这么小的事情上使用moment.js。您可以这样做 let date = new Date(); let event = date.toLocaleString('ko-KR', { timeZon

我有一个表单,用户在其中选择日期、时间和时区

例如:

let date = '02.09.2020';
let time = '16.00';
let timezone = '-07.00';
我想用时区转换此日期:“+02.00

我有一个隐藏的文本输入,我在其中传递我想要的实现日期格式


我不想在这么小的事情上使用moment.js。

您可以这样做

let date = new Date();
let event = date.toLocaleString('ko-KR', { timeZone: 'UTC' })) // if the timezone was Korea

您可以使用给定时区的偏移量构建UTC日期
-07.00
。然后,您可以将所需的偏移量
+02.00
添加到该偏移量中

更新:根据其他用户的输入,我将假设以下内容

  • 当地日期:
    2020-02-09
    16.00
    -07:00
  • UTC日期:
    2020-02-09
    23:00
    (减去本地时区偏移)
  • UTC+2:
    2020-02-10
    01:00
    (添加所需偏移)
constoffsetdate=(dateStr、timeStr、srcfoffset、destfoffset)=>{
consttokenize=str=>str.split('.').map(v=>parseInt(v,10));
const[月、日、年]=标记化(dateStr);
const[小时,分钟]=标记化(timeStr);
const[srcOffHours,srcOffMins]=标记化(srcOffset);
const[destOffHours,destoffmin]=标记化(destOffset);
const-utcDate=新日期(Date.UTC(年,月-1,日期,小时,分钟));
常数srcOff=srcOffHours*36e5+srcOffMins*6e4;
常数destOff=destOff小时*36e5+destOff分钟*6e4;
设置时间(utcDate.getTime()-srcloff+destOff);
log(`Time:${utcDate.toISOString()}`);
返回[
utcDate.getUTCDate(),
utcDate.getUTCMonth()+1,
utcDate.getUTCFullYear().toString().substr(2)
].map(v=>(v+“”).padStart(2,'0')).join(':');
};
施工日期='2020年9月2日';
常数时间='16.00';
常数时区='-07.00';

log(offsetDate(日期、时间、时区,+02.00'));//10:02:20
什么日期?日期对象在哪里?日期的格式是什么?DD:MM:YYYY,MM:DD:YYYY?任何其他?用户在想要开会时选择日期、时间和时区。提交表单时,我得到所有数据,并希望在我的国家GMT+02.00转换这些数据,然后将其存储在我的数据库中。我想实现的格式是DD:MM:YY。请在OP中添加其他信息(例如日期的格式)。非常好。我认为这里的“utcDate.setTime(utcDate.getTime()+srcOff+destOff)”应该是reduce srcOff而不是add。但不幸的是,它对一些国家有效,而对其他国家无效。我不明白。和我的代码一样的问题。@razvanF您总是添加。如果偏移量为负数,您将进行减法,因为操作会翻转。这有许多问题。OP格式为d.m.y,但offsetDate函数假定为m.d.y。它还错误地应用了偏移:如果初始时间为-7中的16:00,则UTC时间为23:00,+2中为次日的01:00(即9小时后)。它可能也不能正确计算负偏移量,比如-2:30(美国/圣约翰)。@RobG OP没有告诉我们预期输出是什么,但我可以调整逻辑,将给定日期作为本地日期处理。