Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.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 - Fatal编程技术网

Javascript 如果未检测到时区,则无法强制运行时时区

Javascript 如果未检测到时区,则无法强制运行时时区,javascript,Javascript,我正在尝试获取日期/时间,我的代码(如下)运行良好。不幸的是,在早期版本的chrome上,它无法检测时区,并给出错误- RangeError: Invalid time zone specified: undefined at new DateTimeFormat (native) at Date.toLocaleString (native) 。因此,当未检测到运行时区时,我需要帮助将其强制为UTC。有人能帮忙吗 这是我的代码: const printedDate = ne

我正在尝试获取日期/时间,我的代码(如下)运行良好。不幸的是,在早期版本的chrome上,它无法检测时区,并给出错误-

RangeError: Invalid time zone specified: undefined
    at new DateTimeFormat (native)
    at Date.toLocaleString (native)
。因此,当未检测到运行时区时,我需要帮助将其强制为
UTC
。有人能帮忙吗

这是我的代码:

 const printedDate = new Date;
    const printedDateStringFormatted = printedDate.toLocaleString();
如果我不清楚,请告诉我我的问题。

var aestTime=new Date().toLocaleString(“en-US”,{时区:“澳大利亚/布里斯班”});
aestTime=新日期(aestTime);
console.log('AEST time:'+aestTime.toLocaleString())
var asiaTime=new Date().tolocalesting(“en-US”{时区:“亚洲/上海”});
asiaTime=新日期(asiaTime);
console.log('Asia time:'+asiaTime.toLocaleString())
var usaTime=new Date().tolocalstring(“en-US”,{时区:“美国/纽约”});
usaTime=新日期(usaTime);
console.log('USA time:'+usaTime.toLocaleString())
var indiaTime=new Date().tolocalstring(“en-US”{时区:“亚洲/加尔各答”});
indiaTime=新日期(indiaTime);
console.log('India time:'+indiaTime.toLocaleString())
这是处理本地化的标准方法

他们只是做了一个循环,就像:

if(!timezone)
{
   timezone = utcTime;
}

代码来自@Udhaya

这也很好:

/**
*用于计算本地时间的函数
*在另一个城市
*考虑到城市的UTC偏移量
*/
函数计算时间(城市、偏移){
//为当前位置创建日期对象
var d=新日期();
//换算为毫秒
//添加本地时区偏移
//获取UTC时间(毫秒)
var utc=d.getTime()+(d.getTimezoneOffset()*60000);
//为不同的城市创建新的日期对象
//使用提供的偏移量
var nd=新日期(utc+(3600000*偏移量));
//以字符串形式返回时间
return“+city+中的本地时间为”+nd.toLocaleString();
}

如果无法检测到本地时区,则可以捕获错误,在这种情况下,请使用UTC

const printedDate=新日期;
让printedDateStringFormatted;
试一试{
printedDateStringFormatted=printedDate.toLocaleString();
}捕获(e){
常量选项={timeZone:'UTC',timeZoneName:'short'};
printedDateStringFormatted=printedDate.ToLocalString(未定义,选项);
}
//本地日期时间(如果可用),否则将是UTC的日期时间

console.log(printedDateStringFormatted)能否请您解释一下
printedDateStringFormatted=printedDate.toLocaleString(未定义,选项)未定义的参数用于区域设置。您可以在此处添加语言标记,例如
en-US
。如果参数未定义,此方法将返回操作系统指定的本地化数字,因此基本上不需要在此处包含它,这就是我将其设置为未定义的原因。通过选项,我们指定我们想要的时区为UTC。明白了。谢谢还有一个疑问。我有下面的变化,我没有测试,因为我不能复制在我的盒子上。但我的问题是下面的更改是否会修复我当前的问题,即
范围错误:指定的时区无效:在新日期未定义TimeFormat(本机)在日期。ToLocalString(本机)
这是我的更改:
让printedDateStringFormatted:string;尝试{printedDateStringFormatted=printedDate.toString();}捕获{printedDateStringFormatted=printedDate.toutString();}
非常感谢。我也会测试你的代码。如果这行得通,我会把它标记为答案