Ejemplo n.º 1
0
        // 渲染预测月经数据
        public PeriodResult RenderPeriod(int year, int month, DateTime last_period, DateTime period, int days, int cycle, PeriodResult result)
        {
            DateTime first_day = new DateTime(year, month, 1);
            DateTime last_day  = first_day.AddMonths(1);

            // 填充预计月经期
            for (int i = 0; i < days; i++)
            {
                var item = period.AddDays(i);
                if (item >= first_day && item < last_day)
                {
                    result.prep_days.Add(item.Day);
                }
            }
            var safe_day_last  = period.AddDays(cycle - 3);
            var safe_day_first = period.AddDays(days + 4);
            var danger_day     = (safe_day_last.Subtract(safe_day_first).Days) / 2 - 2;

            for (int i = 0; i < 5; i++)
            {
                // 填充易孕期
                var item = safe_day_first.AddDays(danger_day + i);
                if (item >= first_day && item < last_day)
                {
                    result.e_days.Add(item.Day);
                }
            }
            return(result);
        }
Ejemplo n.º 2
0
        // 渲染历史月经数据
        public PeriodResult RenderPeriodHistory(int year, int month, PeriodData data, PeriodResult result)
        {
            //var peroid_list = from m in peroid
            DateTime first_day = new DateTime(year, month, 1);
            DateTime last_day  = first_day.AddMonths(1);
            DateTime period    = data.MC_Begin;

            // 填充历史经期
            for (int i = 0; i < data.MC_Days; i++)
            {
                var item = period.AddDays(i);
                if (item >= first_day && item < last_day)
                {
                    result.p_days.Add(item.Day);
                }
            }
            var safe_day_last  = period.AddDays(data.MC_Cycle - 3);
            var safe_day_first = period.AddDays(data.MC_Days + 4);
            var danger_day     = (safe_day_last.Subtract(safe_day_first).Days) / 2 - 2;

            for (int i = 0; i < 5; i++)
            {
                // 填充易孕期
                var item = safe_day_first.AddDays(danger_day + i);
                if (item >= first_day && item < last_day)
                {
                    result.e_days.Add(item.Day);
                }
            }
            return(result);
        }
Ejemplo n.º 3
0
        // 通过月份,获取生理期数据
        public PeriodResult getPeriodResult(int year, int month, DateTime mc_date, int mc_days, int mc_cycle, PeriodResult result)
        {
            // 当月第一天
            DateTime first_day = new DateTime(year, month, 1);
            // 当月最后一天
            DateTime last_day         = first_day.AddMonths(1);
            int      difference_first = Convert.ToInt32(first_day.Subtract(mc_date).TotalDays);
            int      difference_last  = Convert.ToInt32(last_day.Subtract(mc_date).TotalDays);
            // 计算其中间隔多少个周期

            int period_count_f = difference_first / mc_cycle;
            int period_count_l = difference_last / mc_cycle;

            //PeriodResult result = new PeriodResult();

            for (int i = period_count_f; i <= period_count_l; i++)
            {
                DateTime period = mc_date.AddDays(i * mc_cycle);
                // 渲染当月月经数据
                if (period > mc_date)
                {
                    result = RenderPeriod(year, month, mc_date, period, mc_days, mc_cycle, result);
                }
            }
            return(result);
        }