java计算怀孕算法

CQM*_*CQM 0 java algorithm date epoch

你好我试着计算怀孕期间还剩多少天,但我认为我的算法不正确

public int getDaysPregnantRemainder_new() {
    GregorianCalendar calendar = new GregorianCalendar();
   calendar.set(Calendar.HOUR_OF_DAY, 0);
  calendar.set(Calendar.MINUTE, 0);
   calendar.set(Calendar.SECOND, 0);
   long diffDays = 280 - ((getDueDate().getTime() - calendar.getTime()
  .getTime()) / (24 * 60 * 60 * 1000));
  return (int) Math.abs((diffDays) % 7);
   }
Run Code Online (Sandbox Code Playgroud)

我基于280天的期限,getDueDate()是一个Date对象,并getTime()返回毫秒的unix时间

在某些现实世界中,报告的数字有时是一个,我开始认为我的算法是错误的,或者毫秒时间逐渐变得越来越远,或者毫秒时间不够精确,或者格里高利日历功能很奇怪.

总而言之,我不确定,任何洞察力都赞赏

Mad*_*mer 5

我不知道你的算法,但这(基本上)是我跟踪我妻子的事故时使用的那个...书呆子......

为自己节省大量的"猜测"工作并掌握Joda-Time

public class TestDueDate {

    public static final int WEEKS_IN_PREGNANCY = 40;
    public static final int DAYS_IN_PREGNANCY = WEEKS_IN_PREGNANCY * 7;

    public static void main(String[] args) {

        DateTime dueDate = new DateTime();
        dueDate = dueDate.plusDays(DAYS_IN_PREGNANCY);

        System.out.println("dueDate = " + dueDate);

        DateTime today = DateTime.now();

        Days d = Days.daysBetween(today, dueDate);

        int daysRemaining = d.getDays();

        int daysIn = DAYS_IN_PREGNANCY - daysRemaining;

        int weekValue = daysIn / 7;
        int weekPart = daysIn % 7;

        String week = weekValue + "." + weekPart;

        System.out.println("Days remaining = " + daysRemaining);
        System.out.println("Days In = " + daysIn);
        System.out.println("Week = " + week);

    }
}
Run Code Online (Sandbox Code Playgroud)

这将输出......

dueDate = 2014-02-25T14:14:31.159+11:00
Days remaining = 279
Days In = 1
Week = 0.1
Run Code Online (Sandbox Code Playgroud)