0

0

toLocaleTimeString()方法存在的问题分析

零下一度

零下一度

发布时间:2017-06-26 11:16:34

|

2368人浏览过

|

来源于php中文网

原创

  这两天修改一个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

 截图如下:

图1:此图为两方法在谷歌上的运行情况,可以看出上部分 toLocaleTimeString()处理的,为分、秒分别补0了;下部分是分别获取的分、秒,没有补0

图2:此图为两方法在IE11上的运行情况。出问题了,上部分 toLocaleTimeString()处理的,在为分、秒分别补0的操作下,还为开头和":"的左右各加了一个空格从而导致整个字符串的长度由原来的8加长到13,从而导致了 substr(index,length) 方法的运行结果与预想的不一致;而下部分由于是分别获取的时,分、秒,虽然没有补0,但是字符串是我们自己拼接的,不存在添加空格这个问题,所以 substr(index,length) 方法的运行结果与预想的一致,能得到我们想要的字符串。

图3:此图为两方法在谷歌上的运行情况,在时、分、秒都超过10的情况下,显示的结果字符串和数据长度是一致的

图4:此图为两方法在IE11上的运行情况,在时、分、秒都超过10的情况下,显示的结果字符串看似一样其实不一样,两者长度区别,由于toLocaleTimeString() 添加空格的缘故。

韩国商城购物MORNING MALL
韩国商城购物MORNING MALL

主要增加论坛整合,在后台内置网银,快钱支付宝等实时在线支付平台 支付宝支付方式改成在收银台统一支付 并且修改了收到已付款定单后台显示定单确认功能[这功能非常强大,自动确认] 并且增加了商城内短信功能,商城店主可以自由与会员之间实时交谈。 改正给ID添加积分后,登陆到前台,在 MEMBER LOGIN 下面的积分仍然显示为0的问题 修改 订单确认 中 投递&包装方法 没有根据前面的选择而改

下载

图5:此图为两方法在谷歌上的运行 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

相关专题

更多
高德地图升级方法汇总
高德地图升级方法汇总

本专题整合了高德地图升级相关教程,阅读专题下面的文章了解更多详细内容。

4

2026.01.16

全民K歌得高分教程大全
全民K歌得高分教程大全

本专题整合了全民K歌得高分技巧汇总,阅读专题下面的文章了解更多详细内容。

3

2026.01.16

C++ 单元测试与代码质量保障
C++ 单元测试与代码质量保障

本专题系统讲解 C++ 在单元测试与代码质量保障方面的实战方法,包括测试驱动开发理念、Google Test/Google Mock 的使用、测试用例设计、边界条件验证、持续集成中的自动化测试流程,以及常见代码质量问题的发现与修复。通过工程化示例,帮助开发者建立 可测试、可维护、高质量的 C++ 项目体系。

10

2026.01.16

java数据库连接教程大全
java数据库连接教程大全

本专题整合了java数据库连接相关教程,阅读专题下面的文章了解更多详细内容。

33

2026.01.15

Java音频处理教程汇总
Java音频处理教程汇总

本专题整合了java音频处理教程大全,阅读专题下面的文章了解更多详细内容。

15

2026.01.15

windows查看wifi密码教程大全
windows查看wifi密码教程大全

本专题整合了windows查看wifi密码教程大全,阅读专题下面的文章了解更多详细内容。

42

2026.01.15

浏览器缓存清理方法汇总
浏览器缓存清理方法汇总

本专题整合了浏览器缓存清理教程汇总,阅读专题下面的文章了解更多详细内容。

7

2026.01.15

ps图片相关教程汇总
ps图片相关教程汇总

本专题整合了ps图片设置相关教程合集,阅读专题下面的文章了解更多详细内容。

9

2026.01.15

ppt一键生成相关合集
ppt一键生成相关合集

本专题整合了ppt一键生成相关教程汇总,阅读专题下面的的文章了解更多详细内容。

6

2026.01.15

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Firebug入门教程
Firebug入门教程

共7课时 | 2.9万人学习

前端最全HTTP基础原理及应用
前端最全HTTP基础原理及应用

共12课时 | 1.7万人学习

后盾网HTML5视频教程
后盾网HTML5视频教程

共38课时 | 8.2万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号