zoukankan      html  css  js  c++  java
  • 慎用MonthsBetweent和MonthSpan

    ●function MonthsBetween(const ANow, AThen: TDateTime): Integer; 

    描述: 
    根据两个给定的TDateTime类型的参数ANow和AThen,MonthsBetween函数能得到两个日期在月份 
    上差距数。因为月份的天数是不同的,所以 MonthsBetween 函数返回的是一个近似值,该近似 
    值基于每个月份为 30.4375 天。不足一个月的数字将不被计算。 
    因此,例如,对于 2月1日 到 2月28日,MonthsBetween 返回的数值为 0。 
    同样,对于 2月1日 到 3月1日,MonthsBetween 返回的数值也是 0。 

    ●function MonthSpan(const ANow, AThen: TDateTime): Double; 

    描述: 
    根据两个给定的TDateTime类型的参数ANow和AThen,MonthsBetween函数能得到两个日期在月份 
    上差距数。因为月份的天数是不同的,所以 MonthsBetween 函数返回的是一个近似值,该近似 
    值基于每个月份为 30.4375 天。与 MonthsBetween 函数不同,MonthsBetween函数不计算不足 
    一个月的数字,MonthSpan函数将会得到不足一个月的数字。 
    注意:此函数返回的类型为 Double 

    看函数实现:

    function MonthsBetween(const ANow, AThen: TDateTime): Integer;

    begin

      Result := Trunc(MonthSpan(ANow, AThen));

    end;

     
     
    function MonthSpan(const ANow, AThen: TDateTime): Double;
    begin
      Result := DaySpan(ANow, AThen) / ApproxDaysPerMonth;
    end;
     
     
    var
      ApproxDaysPerMonth: Double = 30.4375;
      ApproxDaysPerYear: Double  = 365.25;
     
     
    因为函数只是计算近似值,所以计算出来的结果是有问题。
    http://blog.csdn.net/nhconch/article/details/6265173
  • 相关阅读:
    AE开发中实现Control中的各种图形工具的方法(转)
    ArcEngine打开本地数据库
    【ArcMap】
    【ArcCatalog】
    go guid 和uuid生成
    go select 的default
    go select 使得一个 goroutine 在多个通讯操作上等待。
    go channel
    go goroutine
    go io.Reader 接口
  • 原文地址:https://www.cnblogs.com/findumars/p/5393679.html
Copyright © 2011-2022 走看看