簡體   English   中英

從周數獲取周開始和結束天數

[英]Get week start and end days from week number

我想獲取給定周數的開始和結束日期。 我嘗試了以下代碼,但它總是返回相同的日期(當前周)

val c: Calendar = Calendar.getInstance()
val week = 39
 
c.set(Calendar.WEEK_OF_YEAR, week)
 
val firstDayOfWeek = c.firstDayOfWeek
c.set(Calendar.DAY_OF_WEEK,firstDayOfWeek)
startDate = SimpleDateFormat("yyyy-MM-dd",Locale.getDefault()).format(c.time).toString()
 
c.set(Calendar.DAY_OF_WEEK, firstDayOfWeek+6)
endDate = SimpleDateFormat("yyyy-MM-dd",Locale.getDefault()).format(c.time).toString()

我通過在使用之前額外調用c.time來解決它。 這是工作代碼:

val c: Calendar = Calendar.getInstance()//Locale.getDefault())
val week = 39
c.set(Calendar.WEEK_OF_YEAR, week)
val t = c.time;
val firstDay = c.firstDayOfWeek
c.set(Calendar.DAY_OF_WEEK,firstDay)
startDate = SimpleDateFormat("yyyy-MM-dd",Locale.getDefault()).format(c.time).toString()
c.set(Calendar.DAY_OF_WEEK,firstDay+6)
endDate = SimpleDateFormat("yyyy-MM-dd",Locale.getDefault()).format(c.time).toString()

無法理解它的工作原理,在閱讀此https://developer.android.com/reference/java/util/Calendar#field-manipulation后嘗試

您一定遺漏了某些東西或犯了一些基本錯誤。 下面給出證明:

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Locale;

public class Main {
    public static void main(String[] args) {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd", Locale.getDefault());
        int week = 39;

        Calendar c = Calendar.getInstance();
        c.set(Calendar.WEEK_OF_YEAR, week);

        int firstDayOfWeek = c.getFirstDayOfWeek();

        // Start date
        c.set(Calendar.DAY_OF_WEEK, firstDayOfWeek);
        String startDate = sdf.format(c.getTime());
        System.out.println(startDate);

        // End date
        c.set(Calendar.DAY_OF_WEEK, firstDayOfWeek + 6);
        String endDate = sdf.format(c.getTime());
        System.out.println(endDate);
    }
}

輸出:

2020-09-21
2020-09-27

注意:我不知道 Kotlin 但 AFAIK,你也可以在 Kotlin 中運行 Java 代碼。 如果您想堅持使用 Kotlin 語法,我希望您能夠輕松地將其轉換為 Kotlin 語法。

暫無
暫無

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

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