Javascript 如果未检测到时区,则无法强制运行时时区
我正在尝试获取日期/时间,我的代码(如下)运行良好。不幸的是,在早期版本的chrome上,它无法检测时区,并给出错误-Javascript 如果未检测到时区,则无法强制运行时时区,javascript,Javascript,我正在尝试获取日期/时间,我的代码(如下)运行良好。不幸的是,在早期版本的chrome上,它无法检测时区,并给出错误- RangeError: Invalid time zone specified: undefined at new DateTimeFormat (native) at Date.toLocaleString (native) 。因此,当未检测到运行时区时,我需要帮助将其强制为UTC。有人能帮忙吗 这是我的代码: const printedDate = ne
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();}
非常感谢。我也会测试你的代码。如果这行得通,我会把它标记为答案