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
  • 相关阅读:
    阿里图标库引用简介---20200608更新
    2.10排序算法
    2.9Node节点的学习
    2.8DOM节点的学习
    2.5数组
    2.6对象和函数
    2.7变量、内存、Math和Date的初级认识
    css优先级问题
    事件委托(事件代理)初认识
    静态页面学习随笔(1)-如何正确布局大体结构
  • 原文地址:https://www.cnblogs.com/findumars/p/5393679.html
Copyright © 2011-2022 走看看