Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/346.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在java中,假设1年等于360天,如何将n天显示为日期?_Java_Function_Calendar - Fatal编程技术网

在java中,假设1年等于360天,如何将n天显示为日期?

在java中,假设1年等于360天,如何将n天显示为日期?,java,function,calendar,Java,Function,Calendar,这是我的密码 int txtSubsDay = Integer.parseInt(this.textSubDay.getText()); int txtDay = Integer.parseInt(this.textDay.getText()); int txtMonth = Integer.parseInt(this.textMonth.getText()); int txtYear = Integer.parseInt(this.textYea

这是我的密码

      int txtSubsDay = Integer.parseInt(this.textSubDay.getText());
      int txtDay = Integer.parseInt(this.textDay.getText());
      int txtMonth = Integer.parseInt(this.textMonth.getText());
      int txtYear = Integer.parseInt(this.textYear.getText());
      int daysToSubs = txtSubsDay;

      int convertedYears = (int)(daysToSubs / 360);
      int convertedMonths = (int)((daysToSubs % 360) / 30);
      int convertedDays = (int)((daysToSubs % 360) % 30);          

      Calendar calendar = new GregorianCalendar(txtYear, txtMonth-1, txtDay);
      calendar.add(Calendar.MONTH, -convertedMonths);
      calendar.add(Calendar.DAY_OF_MONTH, -convertedDays);
      calendar.add(Calendar.YEAR, -convertedYears);
      SimpleDateFormat dateFormat = new SimpleDateFormat("dd MM yyyy");
      SimpleDateFormat dayFormat = new SimpleDateFormat("d MMM yyyy");
      String lastDate = dateFormat.format(calendar.getTime());
      String lastDate2 = dayFormat.format(calendar.getTime());
      labelOutput.setText(lastDate);
      labelOutput2.setText(lastDate2);
这正是我想要的////////////////////////////////////////
这节省了我的时间。

你需要找出两个日期之间的天数

//we have two dates, now and day 0 
Date d1 = new Date(0); 
Date d2 = new Date();
//substract times from each other, and divide this by number milisecond in day
int days =(int)((d2.getTime()-d1.getTime()) /(1000*60*60 *24) );

//and display your result
System.out.println(days+" days = "+(days/360)+" years "+((days%360)/30)+" month "+days%30);
不过,我真的不明白为什么你坚持使用360多年,30个月。如果您只想从一个日期中减去天数以获得过去的正确日期,请改用以下方法:

SimpleDateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy");

Date dateInstance = dateFormat.parse("27/07/2015");
int daysSubstracted = 548;

Calendar cal = Calendar.getInstance();
cal.setTime(dateInstance);
cal.add(Calendar.DATE, -daysSubstracted);
Date dateInPast = cal.getTime();

System.out.println(dateFormat.format(dateInPast));

// Result: 25/01/2014

到目前为止您尝试了什么?只需使用a。您尝试过使用
/
%
运算符吗?您知道一年是365天(每4年366次)?不是360….:我必须假设一年等于360天,一个月等于30天。我需要一个函数来进行此计算。我不知道您是如何定义16475天的。@Ert
getTime()
method返回自1970年1月1日00:00:00以来的毫秒数。由于d1是1970年1月1日,d2是当前日期,天数应等于这些日期之间的天数。当我们计算退休保险天数时,我们必须假设一年为360天,这就是为什么我需要它。作为你的计算,它很好,但是当它减去它时,它会计算有31天的月份,这就是为什么如果日期是2015年7月27日,减去548天,我应该得到2015年1月19日。不是2015年1月25日这对我帮助太多了,谢谢。我正在粘贴代码的最新版本。多亏了你,我得到了我想要的。
SimpleDateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy");

Date dateInstance = dateFormat.parse("27/07/2015");
int daysSubstracted = 548;

Calendar cal = Calendar.getInstance();
cal.setTime(dateInstance);
cal.add(Calendar.DATE, -daysSubstracted);
Date dateInPast = cal.getTime();

System.out.println(dateFormat.format(dateInPast));

// Result: 25/01/2014