2017-08-16 83 views
0

我的要求是获得当周的开始日期和结束日期当日期通过时。我已搜查,我发现吨的答案,但混淆哪一个是最好的使用。在该线程我发现下面的代码之一:使用java获取一周的开始和结束日期使用java

Calendar c = Calendar.getInstance(); 
    c.setTime(new Date("8/16/2017")); 
    int dayOfWeek = c.get(Calendar.DAY_OF_WEEK); 
    System.out.println("day :" + dayOfWeek); 
    c.set(Calendar.DAY_OF_WEEK, c.getFirstDayOfWeek()); 
    System.out.println("start of week day :" + c.getTime()); 

输出:

day :4 
start of week day :Sun Aug 13 00:00:00 EDT 2017 

我看到一个bug在上面的代码输出中。本周开始应该是8月14日星期一,但是它会显示8月13日。当日期作为字符串动态传递时,有任何建议可以获得一周的开始日期和结束日期。

--EDITED-- 我在寻找java代码,它返回日期的第一天和最后一天的日期为

+3

周日日历周的第一天。 – drelliot

+0

https://stackoverflow.com/questions/11858565/how-to-set-first-day-of-week-in-a-java-application-calendar –

+0

我在找第一天和最后一天的日期通过日期的那一周。 – scrit

回答

3
import java.time.LocalDate; 

import static java.time.DayOfWeek.MONDAY; 
import static java.time.DayOfWeek.SUNDAY; 
import static java.time.temporal.TemporalAdjusters.nextOrSame; 
import static java.time.temporal.TemporalAdjusters.previousOrSame; 

public class FirstAndLast 
{ 
    public static void main(String[] args) 
    { 
    LocalDate today = LocalDate.now(); 

    LocalDate monday = today.with(previousOrSame(MONDAY)); 
    LocalDate sunday = today.with(nextOrSame(SUNDAY)); 

    System.out.println("Today: " + today); 
    System.out.println("Monday of the Week: " + monday); 
    System.out.println("Sunday of the Week: " + sunday); 
    } 
} 
+0

是的,你需要添加额外的依赖。 – Akash

1
Calendar c = Calendar.getInstance(); 
    c.setFirstDayOfWeek(Calendar.MONDAY); //Line2 
    c.setTime(new Date("8/16/2017")); 
    int dayOfWeek = c.get(Calendar.DAY_OF_WEEK); 
    System.out.println("day :" + dayOfWeek); 
    c.set(Calendar.DAY_OF_WEEK, c.getFirstDayOfWeek()); 
    System.out.println("start of week day :" + c.getTime()); 

一周的第一天设置为星期一的第2行

现在输出将是

day :4 
start of week day :Mon Aug 14 00:00:00 EDT 2017 
相关问题