自学JS前端的第n天,今天学习了pink老师JS课程中的时间戳转换日期的代码,一开始看着这段转换代码感觉有点懵,但是随后分析了一下,想明白了这段代码的原理(大佬勿喷,仅仅发表个人见解)
d = parseInt(总秒数/ 60/60 /24); // 计算天数
h = parseInt(总秒数/ 60/60 %24) // 计算小时
m = parseInt(总秒数 /60 %60 ); // 计算分数
s = parseInt(总秒数%60); // 计算当前秒数
其实理解起来,我个人是采用的逆向思维:
例如:求1天2时6分29秒的总秒数:
1 d=1×24×60×60 s
2 h=2×60×60 s
6 m=6×60 s
26 s=26 s
总秒数=1×24×60×60+2×60×60+6×60+26 s
那么反过来,要根据总秒求得具体几天几时几分几秒呢?按照公式来:
天数=(总秒数/ 60/60 /24)的取整=
可以看出,除了1,其他都是小数,取整,则得到天数为1
时数=(总秒数/ 60/60 %24)的取整=再取整
可以看出,取余结果为(对24取余,只满足一个24,剩下的就是余数了),而取整后就只有2了,所以时数为2
分数=(总秒数 /60 %60 )的取整=再取整
可以看出,取余结果为(对60取余,前两位都带有60,肯定可以除尽 PS:这里的除尽指前两位),取整之后只有6了,因此分数为6
秒数=(总秒数%60)的取整=(1×24×60×60+2×60×60+6×60+26)%60再取整(作者这里偷懒没写公式了)
可以看出,前三位都带60(这三位都除得尽)只剩下孤苦伶仃的26,所以取余结果为26,秒数为26
算出结果就是之前假设的例子~
这样逆向推理应该能够更好地理解了吧!希望这篇文章能给大家带来帮助!(大佬勿喷)