Date 使用计算的每年第一天的访问日期差异

Date 使用计算的每年第一天的访问日期差异,date,ms-access,vba,ms-access-2010,Date,Ms Access,Vba,Ms Access 2010,我正在Access 2010中创建一个新表单。我需要创建一个字段,该字段将使用一年中第一天的计算值来计算一年到目前为止的时间框架(以月为单位)。场景是用户将输入一个日期。然后,Access将根据用户密钥的日期计算月份YTD的值。问题是,用户可以输入当前年份的日期,或上一年的日期。因此,我不能简单地硬编码基线日期,如2014年1月1日,以执行计算。我需要Access根据输入的日期生成一年中的第一天,然后执行计算 示例:用户输入“4/10/2013” Access计算从“2013年1月1日”到“20

我正在Access 2010中创建一个新表单。我需要创建一个字段,该字段将使用一年中第一天的计算值来计算一年到目前为止的时间框架(以月为单位)。场景是用户将输入一个日期。然后,Access将根据用户密钥的日期计算月份YTD的值。问题是,用户可以输入当前年份的日期,或上一年的日期。因此,我不能简单地硬编码基线日期,如2014年1月1日,以执行计算。我需要Access根据输入的日期生成一年中的第一天,然后执行计算

示例:用户输入“4/10/2013”

Access计算从“2013年1月1日”到“2013年4月10日”的年至今月数

预期结果:3.25个月


我需要这个来帮助计算收入,它将利用多年的日期。

我很快为您创建了这个函数:

Public Function calcmonths(datecalc As Date) As Double

    calcmonths = Round(DateDiff("d", DateSerial(Year(datecalc), 1, 1), datecalc) * 12 / DateDiff("d", DateSerial(Year(datecalc), 1, 1), DateSerial(Year(datecalc) + 1, 1, 1)), 2)
End Function
您可以将其与表单中的输入一起使用。它使用
DateSerial(year(datecalc),1,1)
计算输入年份的第一天,然后计算天数差。该结果乘以12(月)并除以该年内的天数(计算以确保闰年为366天)。最后,结果四舍五入为2个十进制数