javascript - 月经追踪日历

标签 javascript jquery css jquery-mobile calendar

我正在开发一个用于月经周期计算器的日历,我必须突出显示下一阶段的日子,它们是

  1. 流血日
  2. 受孕期
  3. 排卵日

我拥有的流程数据

  1. 用户将选择经期开始的日期

  2. 默认28天的月经范围

数据处理

根据周期开始日期和周期范围,将应用上述公式

用于计算三个不同的日期范围

使用日期范围,日期的突出显示将应用于当年和 future 几年

所有区间的计算步骤

出血日期计算

假设用户选择的日期为“a” 假设默认周期为“X”

出血天数=x + 3天

生育期计算

受精阶段 I

公式提供了阶段 1 的结束日期

阶段 I 的范围从所选日期到阶段 1 的结束日期

公式

b =[{a +(x-1)-19}]

肥沃阶段 II

c=[{a+(x-1)-10}]

受精期

从(b+1)到(c-1)的范围是可育期范围

排卵日

特定日期=[(b-1) +{(c-b)/2}]

我正在使用 jqm calendar

问题是:我不知道如何根据所有月份的计算将highlighting of days复制到所有日期

最佳答案

您不必计算出所有月份的所有日期,您只需要在每次更新日历时计算出接下来的两个事件(因为您可能在一个月内有多达两组事件但永远不会更多的)。当用户导航到下个月时,您可以“即时”计算该月的事件。

您已经知道了事件之间的时间跨度,可以根据这些时间跨度计算 future 的事件。我已将您的公式简化为:

var periodCycleDays = 28;
var fertilePhaseStart = periodCycleDays - 20;
var fertilePhaseEnd = periodCycleDays - 11;
var ovulation = (fertilePhaseStart-1) + (fertilePhaseEnd - fertilePhaseStart)/2;

有了这个,给定一个初始日期,您可以计算任何给定月份的 future 事件。您需要做的就是算出从初始事件到您正在查看的月份之间经过了多少个周期。然后只需将所有事件时间跨度(上面的变量)乘以经过的周期数,并将该天数添加到初始日期。

下面是您如何执行此操作的演示:http://jsfiddle.net/2sf4gfdr/

关于javascript - 月经追踪日历,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27671225/

相关文章:

javascript - 所有移动设备(浏览器)的锁定屏幕方向

javascript - 查找单元格内容是否出现多次

javascript - 在弹出窗口中显示来自表单的 json 数据结果

html - AngularJS 关闭一个显示在 ng-click 上的 div

javascript - 如何保存 JavaScript Web 应用程序的状态?

javascript - 如何在 React Native 中裁剪图像,使其看起来像圆形而不是矩形?

jquery - IE 的输入占位符不起作用

css - 在 optgroup 标签上使用::before css 选择器时出现浏览器兼容性问题

css - 将 div 宽度设置为没有内联 block 的内容,并使 div 彼此居中对齐

javascript - Jquery Ajax 返回 400 BAD 请求