簡體   English   中英

在 Android 上獲取一周的開始和結束

[英]Get start and end of week on Android

我想知道如何計算本周的開始和結束天數? 我發現它沒有在標准 android 庫或 date4j 之類的庫中實現。

如果有一些簡單明了的方法來實現這一點? 或者我必須再次實施自行車?

謝謝。

使用 date4j 執行此操作不需要太多代碼。 計算一周第一天的示例:

 private void firstDayOfThisWeek(){
    DateTime today = DateTime.today(TimeZone.getDefault()); 
    DateTime firstDayThisWeek = today; //start value 
    int todaysWeekday = today.getWeekDay();
    int SUNDAY = 1;
    if(todaysWeekday > SUNDAY){
      int numDaysFromSunday = todaysWeekday - SUNDAY;
      firstDayThisWeek = today.minusDays(numDaysFromSunday);
    }
    System.out.println("The first day of this week is : " + firstDayThisWeek);
  }

以上遵循周日是一周開始的慣例。 在某些司法管轄區,該約定不適用,因此您需要針對此類情況更改代碼。

也許MonthDisplayHelper可以為您提供幫助。

祝你好運!

這對我有用...

Calendar cal = Calendar.getInstance();
int year = cal.get(Calendar.YEAR);
cal.set(Calendar.DAY_OF_WEEK, cal.MONDAY);
String firstWkDay = String.valueOf(cal.getTime());
//cal.set(Calendar.DAY_OF_WEEK, cal.SUNDAY);
cal.add(Calendar.DAY_OF_WEEK, 6);
String lastWkDay =  String.valueOf(cal.getTime());

對於一周的最后一天,您可以使用cal.set(Calendar.DAY_OF_WEEK, cal.SUNDAY); 但它在某些設備上返回上周日

使用Joda-Time 2.3 庫,這種日期時間工作通常更容易。

取自this answer to a similar question。

LocalDate now = new LocalDate();
System.out.println( now.withDayOfWeek(DateTimeConstants.MONDAY) );
System.out.println( now.withDayOfWeek(DateTimeConstants.SUNDAY) ); 

您可以調用isBefore / isAfterminusWeeks / plusWeeks來獲取過去/未來的值。

這是我一直用來獲取日期的:

 Calendar c = Calendar.getInstance();
 c.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
 c.setFirstDayOfWeek(Calendar.MONDAY);

 startOfWeek = c.getTime();

Try java.util.Calendar.getFirstDayOfWeek()... then it's easy to calculate the last day of week: http://developer.android.com/reference/java/util/Calendar.html#getFirstDayOfWeek ()

我為此寫了自己的邏輯。

fun getStartDateAndEndDateOfWeek(myDate :String) : ArrayList<String>{
        var dates:ArrayList<String> = arrayListOf()
        var cal = Calendar.getInstance()
        cal.time = SimpleDateFormat("yyy/MM/dd").parse(myDate)
        Log.e("==== ","== My Date  : ${SimpleDateFormat("EEE,dd MMM yyyy").format(SimpleDateFormat("yyy/MM/dd").parse(myDate))} ")
        Log.e("== ","Day of Week : ${cal.get(Calendar.DAY_OF_WEEK)}")

        var startDate =""
        var endDate =""

        when(cal.get(Calendar.DAY_OF_WEEK)){
            1 ->{
                var date = getOldDate(6,cal.time)
                startDate = "${SimpleDateFormat("EEE,dd MMM yyyy").format(date)}"
                endDate ="${SimpleDateFormat("EEE,dd MMM yyyy").format(cal.time)}"

                Log.e("======","----------------------------------------------------")
                Log.e("======","----------------User Date is Sunday------------------")
                Log.e("======","----------------------------------------------------")

                Log.e("======","Start Date : $startDate")
                Log.e("======","End Date : $endDate")

                Log.e("======","----------------------------------------------------")
                dates.add(startDate)
                dates.add(endDate)
            }
            2 ->{
                var sdate = getOldDate(0,cal.time)
                var edate = getOldDate(-6,cal.time)
                startDate = "${SimpleDateFormat("EEE,dd MMM yyyy").format(sdate)}"
                endDate ="${SimpleDateFormat("EEE,dd MMM yyyy").format(edate)}"

                Log.e("======","----------------------------------------------------")
                Log.e("======","----------------User Date is Monday------------------")
                Log.e("======","----------------------------------------------------")

                Log.e("======","Start Date : $startDate")
                Log.e("======","End Date : $endDate")

                Log.e("======","----------------------------------------------------")
                dates.add(startDate)
                dates.add(endDate)
            }
            3 ->{
                var sdate = getOldDate(1,cal.time)
                var edate = getOldDate(-5,cal.time)
                startDate = "${SimpleDateFormat("EEE,dd MMM yyyy").format(sdate)}"
                endDate ="${SimpleDateFormat("EEE,dd MMM yyyy").format(edate)}"

                Log.e("======","----------------------------------------------------")
                Log.e("======","----------------User Date is Tuesday------------------")
                Log.e("======","----------------------------------------------------")

                Log.e("======","Start Date : $startDate")
                Log.e("======","End Date : $endDate")

                Log.e("======","----------------------------------------------------")
                dates.add(startDate)
                dates.add(endDate)
            }
            4 ->{
                var sdate = getOldDate(2,cal.time)
                var edate = getOldDate(-4,cal.time)
                startDate = "${SimpleDateFormat("EEE,dd MMM yyyy").format(sdate)}"
                endDate ="${SimpleDateFormat("EEE,dd MMM yyyy").format(edate)}"

                Log.e("======","----------------------------------------------------")
                Log.e("======","----------------User Date is Wednesday------------------")
                Log.e("======","----------------------------------------------------")

                Log.e("======","Start Date : $startDate")
                Log.e("======","End Date : $endDate")

                Log.e("======","----------------------------------------------------")
                dates.add(startDate)
                dates.add(endDate)
            }
            5 ->{
                var sdate = getOldDate(3,cal.time)
                var edate = getOldDate(-3,cal.time)
                startDate = "${SimpleDateFormat("EEE,dd MMM yyyy").format(sdate)}"
                endDate ="${SimpleDateFormat("EEE,dd MMM yyyy").format(edate)}"

                Log.e("======","----------------------------------------------------")
                Log.e("======","----------------User Date is Thursday------------------")
                Log.e("======","----------------------------------------------------")

                Log.e("======","Start Date : $startDate")
                Log.e("======","End Date : $endDate")

                Log.e("======","----------------------------------------------------")
                dates.add(startDate)
                dates.add(endDate)
            }
            6 ->{
                var sdate = getOldDate(4,cal.time)
                var edate = getOldDate(-2,cal.time)
                startDate = "${SimpleDateFormat("EEE,dd MMM yyyy").format(sdate)}"
                endDate ="${SimpleDateFormat("EEE,dd MMM yyyy").format(edate)}"
                Log.e("======","----------------------------------------------------")
                Log.e("======","----------------User Date is Friday------------------")
                Log.e("======","----------------------------------------------------")

                Log.e("======","Start Date : $startDate")
                Log.e("======","End Date : $endDate")

                Log.e("======","----------------------------------------------------")
                dates.add(startDate)
                dates.add(endDate)
            }
            7 ->{
                var sdate = getOldDate(5,cal.time)
                var edate = getOldDate(-1,cal.time)
                startDate = "${SimpleDateFormat("EEE,dd MMM yyyy").format(sdate)}"
                endDate ="${SimpleDateFormat("EEE,dd MMM yyyy").format(edate)}"

                Log.e("======","----------------------------------------------------")
                Log.e("======","----------------User Date is Saturday------------------")
                Log.e("======","----------------------------------------------------")

                Log.e("======","Start Date : $startDate")
                Log.e("======","End Date : $endDate")

                Log.e("======","----------------------------------------------------")
                dates.add(startDate)
                dates.add(endDate)
            }
        }

        return dates
        //getStartEndOFWeek(cal.get(Calendar.WEEK_OF_YEAR),cal.get(Calendar.YEAR),myDate)
    }


    fun getOldDate(daysAgo: Int,myDate:Date): Date {
        val calendar = Calendar.getInstance()
        /*calendar.set(Calendar.MONTH, APRIL)
        calendar.set(Calendar.DAY_OF_MONTH,6)
        calendar.set(Calendar.YEAR,2020)
        Log.e("==== ","=====  Date  : ${calendar.time}")*/
        calendar.add(Calendar.DAY_OF_YEAR, -daysAgo)
        //Log.e("==== ","=====  Date $daysAgo ago : ${calendar.time}")
        return calendar.time
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM