gzh888666 发表于 2013-2-13 21:40:20

计算两个日期的间隔(已解决)

本帖最后由 gzh888666 于 2013-2-15 19:27 编辑

我想计算两段日期的间隔,比如:2012年2月25日到2013年3月2日
返回值:足年份差距时需要是(X年X月X天)
            足月份差距时需要是(X月X天)
            不足一月差距需要是(X天)
想了很久感觉还是蛮复杂的,请求大家的帮助!

298311657 发表于 2013-2-13 22:21:50

_datediff()

veket_linux 发表于 2013-2-13 22:22:54


;处理一下 _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

lpxx 发表于 2013-2-13 23:36:27

只见你嚼,没见咬下黄瓜,牙累了吧?

gzh888666 发表于 2013-2-13 23:36:49

回复 3# veket_linux

确定使用31天或30天标的都是不准确的,应该按照实际的月份天数进行计算,复杂就复杂在这里,需要查询中间的每一个月的天数然后再计算。

netegg 发表于 2013-2-14 00:14:02

本帖最后由 netegg 于 2013-2-14 00:23 编辑

回复 5# gzh888666
datetime 函数是系统定义的(调的api),除非你的系统日期不是31天30天对应的,否则哪来的复杂

如果要是算任意数据差,那个可能性,想来你也知道难度吧

对了,msdn上也只见过到毫秒的差异,还是高精度约数,你说的这个怕是有点异想天开了

或许理解错了,要的是输入两个日期,返回年月日?

shqf 发表于 2013-2-14 13:22:02

本帖最后由 shqf 于 2013-2-14 13:24 编辑

楼主你多虑了。要计算的两个日期所处的月份是30天、31天抑或是28天、29天,计算相差值时是要考虑的,但_datediff()函数会替你考虑的。如果相差31天,那算是相差正好1个月还是相差1个月零1天呢?这个你倒要先想清楚的啊。不过这哪来的复杂呵?

hzxymkb 发表于 2013-2-14 22:50:36

这个问题问得好!正解决了我的问题!谢谢了

ipmitool 发表于 2018-2-7 17:40:32

如果是年月日時分秒都計算進去, 要怎麼計算時間差?
页: [1]
查看完整版本: 计算两个日期的间隔(已解决)