How to get previous 7 dates from a particular date in java?I am getting 7 dates from present date, but I want from particular date

元气小坏坏 提交于 2019-11-28 02:29:41

tl;dr

LocalDate.of( 2018 , Month.JANUARY , 23 )
         .minusDays( … )

java.time

You are using troublesome old date-time classes that are now legacy, supplanted by the java.time classes.

Use LocalDate for a date-only without time-of-day.

Using the Month enum.

LocalDate start = LocalDate.of( 2018 , Month.JANUARY , 23 ) ;  // 2018-01-23.

Using month numbers, 1-12 for January-December.

LocalDate start = LocalDate.of( 2018 , 1 , 23 ) ;  // 2018-01-23.

Collect a sequence of dates.

List<LocalDate> dates = new ArrayList<>( 7 ) ;
for( int i = 1 ; i <= 7 ; i ++ ) {
    LocalDate ld = start.minusDays( i ) ;  // Determine previous date.
    dates.add( ld ) ;  // Add that date object to the list. 
}

For earlier Android, use the ThreeTen-Backport and ThreeTenABP projects.

As Uta Alexandru and Basil Bourque have said already, don’t use the long outmoted classes SimpleDateFormat and Calendar. java.time, the modern Java date and time API also known as JSR-310, is so much nicer to work with:

    DateTimeFormatter dtf = DateTimeFormatter.ofPattern("d-M-uuuu");
    LocalDate date = LocalDate.parse("2-1-2018", dtf)
            .minusDays(7);

    for(int i = 0; i < 7; i++) {
        date = date.plusDays(1);
        String finalDate = date.format(dtf);
        System.out.println(finalDate);
    }

This prints:

27-12-2017
28-12-2017
29-12-2017
30-12-2017
31-12-2017
1-1-2018
2-1-2018

Not only is the code slightly simpler and shorter, more importantly, it is clearer and more natural to read.

Question: Can I use java.time on Android?

You certainly can. It just requires at least Java 6.

  • In Java 8 and later the new API comes built-in.
  • In Java 6 and 7 get the ThreeTen Backport, the backport of the new classes (ThreeTen for JSR 310).
  • On Android, use the Android edition of ThreeTen Backport. It’s called ThreeTenABP.

Links

if you want to have some date from some data do something like below.

public void dateFromRandomDate(String date){
    SimpleDateFormat formatter2=new SimpleDateFormat("dd-MMM-yyyy");  
    Date date2=formatter2.parse(date); 
    Calendar calendar = Calendar.getInstance();
    //this sets the date to given date
    calendar.calendar.setTime(date2);
    //now call getTime() or add ,subtract date from here
    //this will add 1 year to given one,similarlly others will work.
    calendar.add(Calendar.YEAR,1);
}
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!