2017-12-29 24 views
0

私のアプリでは、今週のユーザの予定リストを表示したいと思います。 APIに渡される引数は、fromDateおよびtoDate(ミリ秒単位)です。私は週の最後の曜日のミリ秒単位で日付を取得する方法を知る必要があります(週は日曜日から始まり土曜日に終わると考えてください)。来週土曜日の日付をミリ秒(long)で取得する

答えて

0
// get today and clear time of day 
     Calendar cal = Calendar.getInstance(); 
     cal.set(Calendar.HOUR_OF_DAY, 0); // ! clear would not reset the hour of day ! 
     cal.clear(Calendar.MINUTE); 
     cal.clear(Calendar.SECOND); 
     cal.clear(Calendar.MILLISECOND); 

// get start of this week in milliseconds 
     cal.set(Calendar.DAY_OF_WEEK, cal.getFirstDayOfWeek()); 
     System.out.println("Start of this week:  " + cal.getTime()); 
     System.out.println("... in milliseconds:  " + cal.getTimeInMillis()); 

// start of the next week 
     cal.add(Calendar.WEEK_OF_YEAR, 1); 
     System.out.println("Start of the next week: " + cal.getTime()); 
     System.out.println("... in milliseconds:  " + cal.getTimeInMillis()); 

週間の最後の日に6を追加!!

0

これは、週の最初の日を日曜日として追加し、その後6日を追加することで実現できます。

// Get current time. You can reset hours/ minutes/ seconds it with default values which you want. 
Calendar c = new GregorianCalendar(Locale.getDefault()); 

// Set first day of week 
c.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY);  
// Add 6 into that to get Saurday 
c.add(Calendar.DAY_OF_WEEK, 6); 

// Get millisenconds for Saturday 
long millies = c.getTimeInMillis(); 
+0

これはどの国でも機能しますか? –

+0

@MehulKanzariyaはい。これは、 'Locale.getDefault()'を使用して行います。あなたが特定の国を取得したい場合は、 'Locale.US'または 'Locale.CANADA'などを使用できます。 –

0

次の土曜日をミリ秒単位で確認するには、次のコードを確認してください。

public class NextSaturdayMain 
{ 
    public static void main(String[] args) 
    { 
     System.out.println(getSaturday(new Date())); 
    } 

    public static long getSaturday(Date today) 
    { 
     Calendar cal = Calendar.getInstance(); 

     cal.setTime(today); 

     int dow = cal.get(Calendar.DAY_OF_WEEK); 

     while (dow != Calendar.SATURDAY) { 
      int date = cal.get(Calendar.DATE); 

      int month = cal.get(Calendar.MONTH); 

      int year = cal.get(Calendar.YEAR); 

      if (date == getMonthLastDate(month, year)) { 

       if (month == Calendar.DECEMBER) { 
        month = Calendar.JANUARY; 

        cal.set(Calendar.YEAR, year + 1); 
       } else { 
        month++; 
       } 

       cal.set(Calendar.MONTH, month); 

       date = 1; 
      } else { 
       date++; 
      } 

      cal.set(Calendar.DATE, date); 

      dow = cal.get(Calendar.DAY_OF_WEEK); 
     } 
     System.out.println(cal.getTime()); 
     return cal.getTimeInMillis(); 
    } 

    private static int getMonthLastDate(int month, int year) 
    { 
     switch (month) 
     { 
      case Calendar.JANUARY: 
      case Calendar.MARCH: 
      case Calendar.MAY: 
      case Calendar.JULY: 
      case Calendar.AUGUST: 
      case Calendar.OCTOBER: 
      case Calendar.DECEMBER: 
       return 31; 

      case Calendar.APRIL: 
      case Calendar.JUNE: 
      case Calendar.SEPTEMBER: 
      case Calendar.NOVEMBER: 
       return 30; 

      default: // Calendar.FEBRUARY 
       return year % 4 == 0 ? 29 : 28; 
     } 
    } 
} 
+2

ここに掲載されているもの以上のものは追加しないため、あなたのウェブサイトへのリンクを削除しました。 [自分のブログを宣伝するのは容認できますか?](https://meta.stackoverflow.com/questions/273209/is-it-acceptable-to-promote-your-own-blog)とスパマー](https://stackoverflow.com/help/promotion) – adiga

関連する問題