[英]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.