关于JS使用时间戳转换日期的原理

自学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)的取整=\small 1+\frac{2}{24}+\frac{6}{60\cdot 24}+\frac{26}{24\cdot 60\cdot 60}   

可以看出,除了1,其他都是小数,取整,则得到天数为1

时数=(总秒数/ 60/60 %24)的取整=\small (24+2+ \frac{6}{60}+\frac{26}{60\cdot 60})%24再取整 

可以看出,取余结果为\small 2+ \frac{6}{60}+\frac{26}{60\cdot 60}(对24取余,只满足一个24,剩下的就是余数了),而取整后就只有2了,所以时数为2

分数=(总秒数 /60 %60 )的取整=\small (24\cdot 60+2\cdot 60+6+\frac{26}{60})%60再取整

可以看出,取余结果为\small 6+\frac{26}{60}(对60取余,前两位都带有60,肯定可以除尽 PS:这里的除尽指前两位),取整之后只有6了,因此分数为6

秒数=(总秒数%60)的取整=(1×24×60×60+2×60×60+6×60+26)%60再取整(作者这里偷懒没写公式了)

可以看出,前三位都带60(这三位都除得尽)只剩下孤苦伶仃的26,所以取余结果为26,秒数为26

算出结果就是之前假设的例子~

这样逆向推理应该能够更好地理解了吧!希望这篇文章能给大家带来帮助!(大佬勿喷)

 

  • 6
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值