我正在开发一种用于月经周期计算器的日历,我必须强调下一阶段的日子,它们是
我对该流程的数据
用户将选择期间开始的日期
月经范围默认为28天
按数据处理
随着期间的开始日期和周期范围,将应用上述公式
用于计算三个不同的日期范围
使用日期范围,日期的突出显示将适用于年份和即将到来的年份
所有范围的计算步骤
出血日期计算
假设用户选择日期为“a” 假设默认周期为“X”
出血天数= x + 3天
肥沃相钙化
肥沃的第一阶段
公式提供阶段1的结束日期
阶段I的范围从所选日期和阶段1的结束日期
式
b = [{a +(x-1)-19}]
第二阶段肥沃
C = [{A +(X-1)-10}]
肥沃的阶段
从(b + 1)到(c-1)的范围是可育期范围
排卵日
特定日期= [(b-1)+ {(c-b)/ 2}]
我正在使用jqm calendar
问题是:我无法弄清楚如何根据所有月份的计算将highlighting of days
复制到所有日期
答案 0 :(得分:2)
您不必计算所有月份的所有日期,您只需要在每次更新日历时计算下两个事件(因为您可能在一个月内最多有两组事件但从来没有更多)。当用户导航到下个月时,您可以计算该月的事件"在飞行中"。
您已经有时间跨越计算未来事件的事件。我已将您的公式简化为:
var periodCycleDays = 28;
var fertilePhaseStart = periodCycleDays - 20;
var fertilePhaseEnd = periodCycleDays - 11;
var ovulation = (fertilePhaseStart-1) + (fertilePhaseEnd - fertilePhaseStart)/2;
有了这个,给定一个初始日期,您可以计算任何给定月份的未来事件。您需要做的就是计算出初始事件和您正在查看的月份之间经过了多少个周期。然后简单地将所有事件时间跨度(上面的变量)乘以传递的周期数,并将该天数添加到初始日期。
以下是有关如何执行此操作的演示:http://jsfiddle.net/2sf4gfdr/