JS中new Date()获取小时多8小时问题

JavaScript010

JS中new Date()获取小时多8小时问题,第1张

在IOS机型上遇到一个获取日期中的小时数莫名其妙多了8个小时的BUG,最后原因为new Date()传入的日期格式不对。

原日期格式:2019-07-10T14:00:00;但在IOS上面需要的格式:2019/07/10T14:00:00;

这时把date用在new Date(date)里面,再getHours()就不会再多8小时了。

创建一个日期对象,使用new运算符和Date构造方法(构造函数)即可。

Date.parse()和Date.UTC(),返回字符串相对应的毫秒数。

如果Date.parse()没有写入内容或者不是标准的日期格式,那么就会返回NaN。

如果想输出指定的日期,把Date.parse()传入Date构造方法里。

Date.UTC()方法也是返回表示日期的毫秒数,但它与Date.parse()在构建值时使用不同的信息。(年份,基于0的月份[0表示1月,1表示2月],月中的哪一天[1-31],小时数[0-23],分钟,秒以及毫秒)。

只有前两个参数是必须的。如果没有提供月数,则天数为1;如果省略其他参数,则统统为0。

Date类型还有一些专门用于将日期格式化为字符串的方法。

组件方法:是为单独获取想要的时间/日期而提供的方法。(注意:这些方法中,有带UTC的,有不带UTC的。UTC日期指的是在没有时区偏差的情况下的日期值。)

方法名 说明

JS实现12小时制和24小时制的转换。

表示时间的方式有24小时制和12小时制。如果是12小时制的时间,通常显示“上午”或“下午”。

function timeType() {

if (document.form.showTimeType[0].checked) {

//判断选择的是哪个类型-24小时就返回true

return true

}

return false

}

function showTheHours(theHour) {

if (timeType() || (theHour >0 &&theHour <13)) {

//如果时间在12小时内

return (theHour)

}

if (theHour == 0) {                             

//如果时间等于0

return (12)

}

return (theHour-12)

//如果时间大于12,需要减去12-针对12小时制

}

function showZeroFilled(inValue) {

if (inValue >9) {

//设置分钟数的两位数显示,不足两位补0

return "" + inValue

}

return "0" + inValue

}

function showAmPm() {                         

//显示上午或下午的方法

if (timeType()) {

return ("")

}

if (now.getHours() <12) { 

//判断日期,显示12小时制的中文提示

return (" 上午")

}

return (" 下午")

}

function showTheTime() {   

//显示时间的方法

now = new Date         

//获取当前时间

document.form.showTime.value = showTheHours(now.getHours())

+ ":" + showZeroFilled(now.getMinutes()) + ":" +

showZeroFilled(now.getSeconds()) + showAmPm()

setTimeout("showTheTime()",1000) 

//每隔1秒更新时间

}

</script>

</head>

<BODY onLoad="showTheTime()">

<center><form name=form>

<input type=text name=showTime size=11><p>

<input type=radio name=showTimeType checked>24小时<br>

<input type=radio name=showTimeType>12小时<br>

</form></center></body>

</html>