首頁 web前端 js教程 toLocaleTimeString()方法存在的問題分析

toLocaleTimeString()方法存在的問題分析

Jun 26, 2017 am 11:16 AM
firefox ie webkit 方法 瀏覽器 Google

  這兩天修改一個bug,發現一個問題:  toLocaleTimeString()方法在IE和谷歌瀏覽器上 根據本地時間格式,把Date 對象的時間部分(不含日期)轉換為“時間字符串”存在區別。方法原本應該是沒有差別的,經過瀏覽器處理以後才出現的差別!

以下是測試程式碼:

    /**   验证Date 对象(时间模块) toLocaleTimeString()方法分别在IE和谷歌浏览器上 根据本地时间格式,把 Date 对象的时间部分转换为“时间字符串”存在区别
    *   从而区别substr(index,length)方法为什么在处理同一个时间字符串,在两个浏览器上的到的结果不一样!
    * */function localeTime(){   //toLocaleTimeString() 根据本地时间格式,把 Date 对象的时间部分(不含日期)转换为字符串。var date = new Date();     //toLocaleTimeString()转换的时间,会在时、分、秒不足十的情况下在前面自行加"0",如"01:02:03"  两个浏览器都会var localeTime = date.toLocaleTimeString();
        console.log(localeTime,localeTime.length);for(var i= 0; i<localeTime.length; i++){
            console.log(localeTime[i]);
        }var substr = localeTime.substr(0,6);
        console.log(substr);
    }function hou_min_sec(){   //getHours(),getMinutes(),getSeconds() 单独获取Date 对象时分秒,然后通过拼接整合成一个时间字符串。var date = new Date();  //getHours(),getMinutes(),getSeconds() 获取的时间,"不会"在时、分、秒不足十的情况下自行加"0",如"1:2:3",若要格式一样,则需要另行处理 两个浏览器都不会var hou = date.getHours();var min = date.getMinutes();var sec = date.getSeconds();var hou_min_sec = hou +":"+ min +":"+ sec;
        console.log(hou_min_sec,hou_min_sec.length);for(var i= 0; i<hou_min_sec.length; i++){
            console.log(hou_min_sec[i]);
        }var substr = hou_min_sec.substr(0,6);
        console.log(substr);
    }
登入後複製

 截圖如下:

圖1:此圖為兩個方法在Google上的運作情況,可以看出上部分 toLocaleTimeString()處理的,為分、秒分別補0了;下部分是分別取得的分、秒,沒有補0

圖2:此圖為兩個方法在IE11上的運作情況。 出問題了,上部分 toLocaleTimeString()處理的,在為分、秒分別補0的操作下,還為開頭和":"的左右各加了一個空格從而導致整個字串的長度由原來的8加長到13,從而導致了 substr(index,length) 方法的運行結果與預想的不一致;而下部分由於是分別獲取的時,分、秒,雖然沒有補0,但是字符串是我們自己拼接的,不存在添加空格這個問題,所以substr(index,length)方法的運行結果與預想的一致,能得到我們想要的字串。

圖3:此圖為兩種方法在Google上的運行情況,在時、分、秒都超過10的情況下,顯示的結果字符字串和資料長度是一致的

圖4:此圖為兩種方法在IE11上的運行情況,在時、分、秒都超過10的情況下,顯示的結果字串看似一樣其實不一樣,兩者長度區別,由於toLocaleTimeString() 添加空格的緣故。

圖5:此圖為兩個方法在Google上的運行 substr(index,length)的 情況,由於資料長度是一致的,所以所得到的字串是一樣的

圖6:此圖為兩個方法在IE11上的運行 substr(index,length)的 情況,由於資料長度不一致的,所以所得到的字串也不一樣

 

  最後,對於單獨獲取的時、分、秒,即getHours(),getMinutes(),getSeconds()三個方法獲得的結果,如果不足"十",在格式上其他格式有差異,只需要判定補足就行。

function hou_min_sec(){var date = new Date();var hou = date.getHours().toString();var min = date.getMinutes().toString();var sec = date.getSeconds().toString();if(hou.length == 1){ //通过判定各个变量的长度(先将它们的值转化为字符串格式),来确定它们是否不足十hou = "0" + hou; //反正它们最后都是以字符串形式拼接,所以我认为这样补"0"最简单}else if(min.length == 1){
            min = "0" + min;
        }else if(sec.length == 1){
            sec = "0" + sec;
        }var hou_min_sec = hou +":"+ min +":"+ sec;
        console.log(hou_min_sec,hou_min_sec.length);for(var i= 0; i<hou_min_sec.length; i++){
            console.log(hou_min_sec[i]);
        }var substr = hou_min_sec.substr(0,6);
        console.log(substr);
    }
登入後複製

以上是toLocaleTimeString()方法存在的問題分析的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

<🎜>:泡泡膠模擬器無窮大 - 如何獲取和使用皇家鑰匙
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系統,解釋
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆樹的耳語 - 如何解鎖抓鉤
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1665
14
CakePHP 教程
1423
52
Laravel 教程
1321
25
PHP教程
1269
29
C# 教程
1249
24
歐易交易所如何註冊賬戶 歐易交易所註冊教程 歐易交易所如何註冊賬戶 歐易交易所註冊教程 Apr 24, 2025 pm 02:06 PM

註冊歐易賬戶的步驟如下:1.準備有效郵箱或手機號和穩定網絡。 2.訪問歐易官網。 3.進入註冊頁面。 4.選擇郵箱或手機號註冊,填寫信息。 5.獲取並填寫驗證碼。 6.同意用戶協議。 7.完成註冊並登錄,進行KYC和設置安全措施。

歐易交易所app官網下載蘋果手機下載 歐易交易所app官網下載蘋果手機下載 Apr 28, 2025 pm 06:57 PM

歐易交易所app支持蘋果手機下載,訪問官網,點擊“蘋果手機”選項,在App Store中獲取並安裝,註冊或登錄後即可進行加密貨幣交易。

幣安下載鏈接 幣安下載路徑 幣安下載鏈接 幣安下載路徑 Apr 24, 2025 pm 02:12 PM

安全下載幣安APP需通過官方渠道:1. 訪問幣安官網,2. 找到並點擊APP下載入口,3. 選擇掃描二維碼、應用商店或直接下載APK文件的方式下載,確保鏈接和開發者信息真實,開啟雙重驗證保護賬戶安全。

芝麻開門官網入口 芝麻開門官方最新入口2025 芝麻開門官網入口 芝麻開門官方最新入口2025 Apr 28, 2025 pm 07:51 PM

芝麻開門是重點加密貨幣交易的平台,用戶可以通過官方網站或社交媒體獲取入口,確保訪問時驗證SSL證書和網站內容的真實性。

歐易官網入口 歐易官方最新入口2025 歐易官網入口 歐易官方最新入口2025 Apr 28, 2025 pm 07:48 PM

選擇可靠的交易平台如歐易(OKEx),確保訪問官方入口。

幣安官網入口 幣安官方最新入口2025 幣安官網入口 幣安官方最新入口2025 Apr 28, 2025 pm 07:54 PM

訪問幣安官網,並查看HTTPS和綠鎖標誌,避免釣魚網站,官方應用也可安全訪問。

Laravel 實時聊天應用:WebSocket 與 Pusher 結合 Laravel 實時聊天應用:WebSocket 與 Pusher 結合 Apr 30, 2025 pm 02:33 PM

在Laravel中構建實時聊天應用需要使用WebSocket和Pusher。具體步驟包括:1)在.env文件中配置Pusher信息;2)設置broadcasting.php文件中的廣播驅動為Pusher;3)使用LaravelEcho訂閱Pusher頻道並監聽事件;4)通過PusherAPI發送消息;5)實現私有頻道和用戶認證;6)進行性能優化和調試。

在手機上使用原生select會遇到哪些問題? 在手機上使用原生select會遇到哪些問題? Apr 30, 2025 pm 03:06 PM

使用原生select在手機上的問題在移動設備上開發應用時,我們經常會遇到需要用戶進行選擇的場景。雖然原生sel...

See all articles