计算两个日期的间隔(已解决)
本帖最后由 gzh888666 于 2013-2-15 19:27 编辑我想计算两段日期的间隔,比如:2012年2月25日到2013年3月2日
返回值:足年份差距时需要是(X年X月X天)
足月份差距时需要是(X月X天)
不足一月差距需要是(X天)
想了很久感觉还是蛮复杂的,请求大家的帮助! _datediff()
;处理一下 _DateDiff() 的 结果.........
;一年按366天算,一个月按31天算
;等楼下进步一修正吧
#Include <Date.au3>
MsgBox(0, "", DateDiffStr("2012/2/25", "2013/3/2"))
Func DateDiffStr($sStartDate, $sEndDate)
$str = ""
$years = ""
$month = ""
$d = ""
$days = _DateDiff('D', $sStartDate, $sEndDate)
If $days > 30 Then
If $days > 366 Then
$years = Floor($days/366)
$days = Mod($days, 366)
$month =Floor($days/31)
$d =Mod($days, 31)
$str =$years & "年" & $month & "月" & $d & "天"
Else
$month =Floor($days/31)
$d = Mod($days, 31)
$str =$month & "月" & $d & "天"
EndIf
Else
$str = $days & "天"
EndIf
Return $str
EndFunc
只见你嚼,没见咬下黄瓜,牙累了吧? 回复 3# veket_linux
确定使用31天或30天标的都是不准确的,应该按照实际的月份天数进行计算,复杂就复杂在这里,需要查询中间的每一个月的天数然后再计算。 本帖最后由 netegg 于 2013-2-14 00:23 编辑
回复 5# gzh888666
datetime 函数是系统定义的(调的api),除非你的系统日期不是31天30天对应的,否则哪来的复杂
如果要是算任意数据差,那个可能性,想来你也知道难度吧
对了,msdn上也只见过到毫秒的差异,还是高精度约数,你说的这个怕是有点异想天开了
或许理解错了,要的是输入两个日期,返回年月日? 本帖最后由 shqf 于 2013-2-14 13:24 编辑
楼主你多虑了。要计算的两个日期所处的月份是30天、31天抑或是28天、29天,计算相差值时是要考虑的,但_datediff()函数会替你考虑的。如果相差31天,那算是相差正好1个月还是相差1个月零1天呢?这个你倒要先想清楚的啊。不过这哪来的复杂呵? 这个问题问得好!正解决了我的问题!谢谢了 如果是年月日時分秒都計算進去, 要怎麼計算時間差?
页:
[1]