ホームページ > 記事 > ウェブフロントエンド > toLocaleTimeString() メソッドに存在する問題の分析
過去 2 日間バグを修正していましたが、問題が見つかりました: IE と Google Chrome の toLocaleTimeString() メソッドでは、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 での 2 つのメソッドの動作を示しています。 上部の toLocaleTimeString( ) ポイントを処理します。秒にはそれぞれ 0 が追加されます。下の部分は、0 の追加なしで、それぞれ によって取得された分と秒です。
図 2: この図は、IE11 での 2 つのメソッドの動作を示しています。 問題があり、上記のtoLocaleTimeString()の処理では、分と秒にそれぞれ0を加えるという操作で、の先頭と「:」の左右にスペースも追加されてしまい、 、これは文字列の長さが元の 8 から 13 に延長され、これにより substr(index, length) メソッドの実行結果が期待と一致しなくなりました。時、分、秒は別々に取得されますが、0は追加されませんが、文字列は自分で結合されており、スペースを追加することは問題ありませんので、substr(index. , length) メソッドは期待どおりであり、必要な文字列を取得できます。
図 3: この図は、Google での 2 つのメソッドの操作を示しています。時間、分、秒がすべて 10 を超える場合、表示される結果の 文字列とデータ長は一致しています 。
図 4: この図は、IE11 での 2 つのメソッドの操作を示しています。時、分、秒が 10 を超えると、表示される結果文字列は同じになります。 実際には、それらは異なります 2 つの長さの違いは、toLocaleTimeString() にスペースが追加されているためです。 図 5: この図は、Google で 2 つのメソッド間で substr(index, length) を実行した状況を示しています。データ の長さは一貫しているため
によって取得される文字列は同じです。 図 6: この図は、IE11 での 2 つのメソッドによる substr(index, length) の操作を示しています。 データ の長さが一貫していないため 、取得される文字列も異なります
。最後に、個別に取得した時、分、秒、つまり getHours()、getMinutes()、getSeconds() の 3 つのメソッドで取得した結果が「10」未満であれば、他の形式の違いはありますが、必要な場合にそれを補うだけです。
りー以上がtoLocaleTimeString() メソッドに存在する問題の分析の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。