ncxj 发表于 2015-12-18 11:54:46

[已解决]如何计算时间间隔,用整数形式表示的年月日,时分秒

本帖最后由 ncxj 于 2015-12-18 17:08 编辑

先上代码
$i=1450438199        ;以整数形式表示的准确时间:2015-12-18 11:29:59
$sec=Mod($i,60)
$minute=Mod(($i-$sec)/60,60)
$hour=Mod((($i-$sec)/60-$minute)/60,24)
$time=$hour &":"&$minute&":"&$sec
ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $time = ' & $time & @CRLF & '>Error code: ' & @error & @CRLF) ;### Debug Console

;以下$day应该是从某年某月某日以来的第几天数据,现在想知道怎么反推出这个初始的年月日,以及如何计算该日期之后,从这个初始时间到任意一个日期中间的天数
$day=((($i-$sec)/60-$minute)/60-$hour)/24
ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $day = ' & $day & @CRLF & '>Error code: ' & @error & @CRLF) ;### Debug Console
$year =2015-Mod($day,365)        ;这样简单的用365计算肯定是不行的,每个公历年并不是简单的365日,这里简单计算一下,看看精确计算有多复杂?
ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $year = ' & $year & @CRLF & '>Error code: ' & @error & @CRLF) ;### Debug Console
这样可以得到结果:
@@ Debug(7) : $time = 11:29:59
>Error code: 0
@@ Debug(11) : $day = 16787
>Error code: 0
@@ Debug(13) : $year = 1653
>Error code: 0
如此计算的时分秒应该是精准的,但是反推初始的年月日很难.并且,如果知道初始年月日,如何才能准确的计算该日期之后某一天到初始日期,中间的日期数?

txen548 发表于 2015-12-18 13:32:12

#include <Date.au3>
$iDateCalc = _DateDiff( 'D', "2015/4/8","2015/11/19")
MsgBox(0, "", "計算經過的天數: " & $iDateCalc )這個可以計算經過天數

ncxj 发表于 2015-12-18 16:58:37

回复 2# txen548


    对对,这样就有办法了,好主意,谢谢

ncxj 发表于 2016-10-20 07:29:53

程序第12行有误:$year =2015-Mod($day,365)
应该是:$year =2015-$day / 365

用_DateDiff 计算出来的起始时间,应该是 1970/1/1 0:0:0

xixin1314 发表于 2018-10-1 10:15:14

感谢分享,收藏
页: [1]
查看完整版本: [已解决]如何计算时间间隔,用整数形式表示的年月日,时分秒