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
  • 相关阅读:
    C# 删除文件夹
    XML操作类
    C# winform 安装程序打包(自定义操作)
    复制Datatable结构和数据,并按条件进行筛选
    Sql_Case_When
    C# using 与Trycatchfinally的区别和用法
    Winform datagridview Excel 导入导出
    矩阵树定理学习笔记
    minmax容斥笔记及例题
    平衡树学习笔记
  • 原文地址:https://www.cnblogs.com/findumars/p/5393679.html
Copyright © 2011-2022 走看看