From 73e5ec95e2cff5b70b431e56327f6082fd638d32 Mon Sep 17 00:00:00 2001 From: dave14305 <44532942+dave14305@users.noreply.github.com> Date: Sat, 27 Mar 2021 14:26:27 -0400 Subject: [PATCH] webui: Fix timezone detection (#729) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Ignore text in parentheses which may include a dash in non-English languages and confuse the index logic. For example: "GMT+0300 (Itä-Euroopan kesäaika)" Fixes #726 --- release/src/router/www/Advanced_System_Content.asp | 13 ++++++++----- release/src/router/www/state.js | 12 ++++++++---- 2 files changed, 16 insertions(+), 9 deletions(-) diff --git a/release/src/router/www/Advanced_System_Content.asp b/release/src/router/www/Advanced_System_Content.asp index 87f2353c83a..cb530ef99c4 100644 --- a/release/src/router/www/Advanced_System_Content.asp +++ b/release/src/router/www/Advanced_System_Content.asp @@ -918,11 +918,14 @@ function corrected_timezone(){ var today = new Date(); var StrIndex; var timezone = uptimeStr_update.substring(26,31); - - if(today.toString().lastIndexOf("-") > 0) - StrIndex = today.toString().lastIndexOf("-"); - else if(today.toString().lastIndexOf("+") > 0) - StrIndex = today.toString().lastIndexOf("+"); + var startPos = today.toString().indexOf("("); + if ( startPos < 0 ) + startPos = today.toString().length; + + if(today.toString().lastIndexOf("-", startPos) > 0) + StrIndex = today.toString().lastIndexOf("-", startPos); + else if(today.toString().lastIndexOf("+", startPos) > 0) + StrIndex = today.toString().lastIndexOf("+", startPos); if(StrIndex > 0){ //alert('dstoffset='+dstoffset+', 設定時區='+timezone+' , 當地時區='+today.toString().substring(StrIndex, StrIndex+5)) diff --git a/release/src/router/www/state.js b/release/src/router/www/state.js index 7588d178b3e..2cd589fa463 100644 --- a/release/src/router/www/state.js +++ b/release/src/router/www/state.js @@ -3620,10 +3620,14 @@ function switchType(obj, showText, chkBox){ function corrected_timezone(){ var today = new Date(); var StrIndex; - if(today.toString().lastIndexOf("-") > 0) - StrIndex = today.toString().lastIndexOf("-"); - else if(today.toString().lastIndexOf("+") > 0) - StrIndex = today.toString().lastIndexOf("+"); + var StrIndex; + var startPos = today.toString().indexOf("("); + if ( startPos < 0 ) + startPos = today.toString().length; + if(today.toString().lastIndexOf("-", startPos) > 0) + StrIndex = today.toString().lastIndexOf("-", startPos); + else if(today.toString().lastIndexOf("+", startPos) > 0) + StrIndex = today.toString().lastIndexOf("+", startPos); if(StrIndex > 0){ if(timezone != today.toString().substring(StrIndex, StrIndex+5)){