js Date时区矫正

JavaScript011

js Date时区矫正,第1张

前言:有时候后端返回给前端的时间格式是这种的

        该时间格式为UTC格式,"+00:00","+"代表是东边的时区,当"+"变成"-"时,代表是西边的时区,后面紧接着的两个数字代表的是具体那个时区,如"+08"代表东八区,":"后的两个数代表和伦敦协调时偏差多少分钟。

        将该时间格式改成"YYYY-mm-dd HH:MM:SS"等格式,则需要处理后端返回时区与本时区时间的偏差。js的Date对象提供getTimezoneOffset函数,用于获取本时区与伦敦协调时的时间差,返回数值的单位是分钟。

        Date对象的toLocaleDateString函数,在PC端和移动端有差别,在安卓移动端会比PC端的返回值多"上午"、"下午"等。

        没有直接使用new Date(value)来获取日期,是因为在IOS系统下,年月日的分隔符只有是"/"的字符串(如"2019/09/09")用new Date(string)得到正确的日期。

        还有另一种格式GMT,相较于UTC格式,GMT没有那么精确,不能具体到毫秒。

        以下内容为追加GMT格式转换

参考:

    JS操作时间 - UNIX时间戳简单介绍  -  阿胜4K

    世界协调时间(UTC)

    MDN Date

实例:检测输入的日期时间格式是否正确。

<script type="text/javascript">

function checknow(){

var obj = document.getElementById("dt")

if(!/^\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}$/.test(obj.value)) alert("请输入正确的日期时间格式!")

}

</script>

<input type="text" id="dt" value="2016-09-09 11:08:33" />

<input type="button" value="检测" onClick="checknow()" />

以上实例点击检测后无报错,表示格式正确。你故意改错再检测就会出现错误提示了。

如果只需要检测日期或时间,可以自己改一下正则式,应该容易看懂的。

js如何保证时间精准不跳秒

js如何保证时间精准不跳秒

1. 使用`window.performance.now()`方法来获取高精度的时间戳,它会返回当前时间和距离页面加载的时间的差值,可以保证精准到微妙级别。

2. 使用`setTimeout()`和`setInterval()`函数来定时调用,这样可以保证时间的精准性。

3. 使用`Date.now()`方法来获取当前时间戳,它可以保证精准到毫秒级别。