找回密码
 加入
搜索
查看: 3016|回复: 4

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

[复制链接]
发表于 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
如此计算的时分秒应该是精准的,但是反推初始的年月日很难.并且,如果知道初始年月日,如何才能准确的计算该日期之后某一天到初始日期,中间的日期数?
发表于 2015-12-18 13:32:12 | 显示全部楼层
#include <Date.au3>
$iDateCalc = _DateDiff( 'D', "2015/4/8","2015/11/19")
MsgBox(0, "", "計算經過的天數: " & $iDateCalc )
這個可以計算經過天數
 楼主| 发表于 2015-12-18 16:58:37 | 显示全部楼层
回复 2# txen548


    对对,这样就有办法了,好主意,谢谢
 楼主| 发表于 2016-10-20 07:29:53 | 显示全部楼层
程序第12行有误:$year =2015-Mod($day,365)  
应该是:$year =2015-$day / 365

用_DateDiff 计算出来的起始时间,应该是 1970/1/1 0:0:0
发表于 2018-10-1 10:15:14 | 显示全部楼层
感谢分享,收藏
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-5-10 15:40 , Processed in 0.078610 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表