21

日数を取得したい。つまり、1月1日は1日目1月2日は2日目2月1日は32日目、12月31日はうるう年かどうかに応じて365日または366日目

私はdate1-date2などのあらゆる種類の手法を使用しましたが、何もうまくいかないようです。論理を正しく理解できない可能性があります。私が欲しいのは、過去の月数に加えて、実行月の日数、つまり今日は2012年9月21日は日数(31(1月)+29(2月)+31(3月)+30(apr)+31(5月)+30(6月)+31(7月) +31(8月)+20(9月))= 264日目で、1日が過ぎるたびにプラス1を追加し続けます...ありがとう

mycode

int year = Calendar.getInstance().get(Calendar.YEAR);
            GregorianCalendar gc = new GregorianCalendar();
            gc.set(GregorianCalendar.DAY_OF_MONTH, 8);
            gc.set(GregorianCalendar.MONTH, GregorianCalendar.JUNE);
            gc.set(GregorianCalendar.YEAR, year);
            int numberofDaysPassed=gc.get(GregorianCalendar.DAY_OF_YEAR);

numberofDaysPassedは私に160の望ましくない結果を与えています

4

6 に答える 6

41
Calendar calendar = Calendar.getInstance();
int dayOfYear = calendar.get(Calendar.DAY_OF_YEAR);  

または Joda-API を使用する

DateTime dt = new DateTime();  
int dayOfYear = dt.getDayOfYear();  

部分が必要な場合は'th'、switch ステートメントを使用します

switch (dayOfYear > 20 ? (dayOfYear % 10) : dayOfYear) {
            case 1:  return dayOfYear + "st";
                     break;
            case 2:  return dayOfYear + "nd";
                     break;
            case 3:  return dayOfYear + "rd";
                     break;
            default:  return dayOfYear + "th";
                     break;   
} 
于 2012-09-21T06:38:31.640 に答える
11

LocalDate

LocalDateJava 8 以降に組み込まれている java.time パッケージ内のクラスを使用します。

年中日を取得します。

int dayOfYear = LocalDate.now().getDayOfYear();

…そして、年間通算日を設定します:

LocalDate localDate = LocalDate.now().withDayOfYear( 195 );
于 2015-12-17T16:02:24.227 に答える
4

カレンダーの日付を問題の日付に設定してみてください。9月21日を要求しましたが、コードに6月8日を入力しました。

代わりに265を与える更新されたコードは次のとおりです。

    int year = Calendar.getInstance().get(Calendar.YEAR);
    GregorianCalendar gc = new GregorianCalendar();
    gc.set(Calendar.DAY_OF_MONTH, 21); // you asked for 21st Sept but put 8
    gc.set(Calendar.MONTH, Calendar.SEPTEMBER); // you aksed for 21st Sept but put JUNE
    gc.set(Calendar.YEAR, year);
    int numberofDaysPassed = gc.get(Calendar.DAY_OF_YEAR);
    System.out.println(numberofDaysPassed);

ちなみに、カレンダーで月や日などを設定する必要はありませんが、デフォルトでは「今」になっています...

于 2012-09-21T06:39:48.093 に答える
2
Calendar ca1 = Calendar.getInstance();    
int DAY_OF_YEAR=ca1.get(Calendar.DAY_OF_YEAR);
System.out.println("Day of Year :"+DAY_OF_YEAR);

logcat で結果を確認してください。

于 2012-09-21T06:39:12.277 に答える
1
DateTime dt = new DateTime();  
String dayOfYear = dt.getDayOfYear().toString();
String day = "";

if(dayOfYear.endsWith("1") && !dayOfYear.endsWith("11"))
    day = dayOfYear+"st";
else if(dayOfYear.endsWith("2") && !dayOfYear.endsWith("12"))
    day = dayOfYear+"nd";
else if(dayOfYear.endsWith("3") && !dayOfYear.endsWith("13"))
    day = dayOfYear+"rd";
else 
    day = dayOfYear+"th";

System.out.println("Day of year :- "+ day);
于 2012-09-21T06:42:53.863 に答える