0

「今日」から「後」の文字列を減算して日数の差を得る方法を誰でも教えてもらえますか。

import java.text.*;
import java.util.*;


public class Main {
public static void main(String args[]){


SimpleDateFormat sdf=new SimpleDateFormat("yyyy/MM/dd");
Calendar cal=Calendar.getInstance();
String today=sdf.format(cal.getTime());
System.out.println(today);
cal.add(Calendar.DATE, 20);
String After=sdf.format(cal.getTime());
System.out.println(After);

}
}
4

4 に答える 4

4

日付を表す長い値を減算して、日、時間、分に戻す必要がないjava8の方が簡単です。

Date today= LocalDate.now();
Date futureDate = LocalDate.now().plusDays(1);
long days = Period.between(today, futureDate).getDays();

Period&LocalDateクラスは #java8 で利用可能

LocalDateドキュメント

LocalDate は、日付を表す不変の日時オブジェクトであり、多くの場合、年月日として表示されます。年間通算日、曜日、年間通算週など、その他の日付フィールドにもアクセスできます。たとえば、「2007 年 10 月 2 日」という値を LocalDate に格納できます。


java8 を使用していない場合は、joda-time ライブラリのorg.joda.time.Daysユーティリティを使用してこれを計算します。

Days day = Days.daysBetween(startDate, endDate);
int days = d.getDays();
于 2014-11-11T05:54:27.527 に答える
3

Java 8 がない場合はJodaTimeを使用する

String timeValue = "2014/11/11";
DateTimeFormatter parseFormat = new DateTimeFormatterBuilder().appendPattern("yyyy/MM/dd").toFormatter();
LocalDate startDate = LocalDate.parse(timeValue, parseFormat);
LocalDate endDate = startDate.plusDays(20);

System.out.println(startDate + "; " + endDate);

Period p = new Period(startDate, endDate);
System.out.println("Days = " + p.getDays());
System.out.println("Weeks = " + p.getWeeks());
System.out.println("Months = " + p.getMonths());

どの出力...

2014-11-11; 2014-12-01
Days = 6
Weeks = 2
Months = 0
于 2014-11-11T06:10:26.677 に答える
0

これを試して...

お役に立てますように。

import java.util.Date;
import java.util.GregorianCalendar;

// compute the difference between two dates.

public class DateDiff {
  public static void main(String[] av) {
    /** The date at the end of the last century */
    Date d1 = new GregorianCalendar(2010, 10, 10, 11, 59).getTime();

    /** Today's date */
    Date today = new Date();

    // Get msec from each, and subtract.
    long diff = today.getTime() - d1.getTime();

    System.out.println("The 21st century (up to " + today + ") is "
        + (diff / (1000 * 60 * 60 * 24)) + " days old.");
  }
}
于 2014-11-11T08:33:32.670 に答える
-1

これはあなたを助けるかもしれません..

SimpleDateFormat sdf=new SimpleDateFormat("yyyy/MM/dd");
    Calendar cal=Calendar.getInstance();
    String today=sdf.format(cal.getTime());
    System.out.println(today);

    cal.add(Calendar.DATE, 20);
    String After=sdf.format(cal.getTime());
    System.out.println(After);

    Date d1 = null;
    Date d2 = null;

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

    try {
        d1 = format.parse(today);
        d2 = format.parse(After);
    } catch (ParseException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

    long diff = d2.getTime() - d1.getTime();

    long diffDays = diff / (24 * 60 * 60 * 1000);

    System.out.println("Difference is "+diffDays+" Days");
于 2014-11-11T05:59:52.707 に答える