找回密码
 加入
搜索
查看: 6308|回复: 8

[效率算法] 计算两个日期的间隔(已解决)

  [复制链接]
发表于 2013-2-13 21:40:20 | 显示全部楼层 |阅读模式
本帖最后由 gzh888666 于 2013-2-15 19:27 编辑

我想计算两段日期的间隔,比如:2012年2月25日到2013年3月2日
返回值:足年份差距时需要是(X年X月X天)
            足月份差距时需要是(X月X天)
            不足一月差距需要是(X天)
想了很久感觉还是蛮复杂的,请求大家的帮助!
发表于 2013-2-13 22:21:50 | 显示全部楼层
_datediff()

评分

参与人数 1金钱 +10 收起 理由
gzh888666 + 10 感谢参与

查看全部评分

发表于 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

评分

参与人数 2金钱 +40 贡献 +10 收起 理由
gzh888666 + 20 + 5 是我想的太复杂了,感谢!
lpxx + 20 + 5 很棒的见解

查看全部评分

发表于 2013-2-13 23:36:27 | 显示全部楼层
只见你嚼,没见咬下黄瓜,牙累了吧?
 楼主| 发表于 2013-2-13 23:36:49 | 显示全部楼层
回复 3# veket_linux

确定使用31天或30天标的都是不准确的,应该按照实际的月份天数进行计算,复杂就复杂在这里,需要查询中间的每一个月的天数然后再计算。
发表于 2013-2-14 00:14:02 | 显示全部楼层
本帖最后由 netegg 于 2013-2-14 00:23 编辑

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

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

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

或许理解错了,要的是输入两个日期,返回年月日?
发表于 2013-2-14 13:22:02 | 显示全部楼层
本帖最后由 shqf 于 2013-2-14 13:24 编辑

楼主你多虑了。要计算的两个日期所处的月份是30天、31天抑或是28天、29天,计算相差值时是要考虑的,但_datediff()函数会替你考虑的。如果相差31天,那算是相差正好1个月还是相差1个月零1天呢?这个你倒要先想清楚的啊。不过这哪来的复杂呵?
发表于 2013-2-14 22:50:36 | 显示全部楼层
这个问题问得好!正解决了我的问题!谢谢了
发表于 2018-2-7 17:40:32 | 显示全部楼层
如果是年月日時分秒都計算進去, 要怎麼計算時間差?
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-12-22 17:00 , Processed in 0.089866 second(s), 28 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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