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

前端 未结 3 799
暖寄归人
暖寄归人 2020-12-07 06:20
//explain
public class DateLoop {
    static String finalDate; 
    static String particularDate;

    public static void main(String[] args) {
        // TODO Auto-         


        
相关标签:
3条回答
  • 2020-12-07 06:57

    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);
    }
    
    0 讨论(0)
  • 2020-12-07 07:03

    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.

    0 讨论(0)
  • 2020-12-07 07:14

    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

    • Oracle tutorial: Date Time, explaining how to use java.time.
    • ThreeTen Backport project
    • ThreeTenABP, Android edition of ThreeTen Backport
    • Question: How to use ThreeTenABP in Android Project, with a very thorough explanation.
    • Java Specification Request (JSR) 310, where the modern date and time API was first described.
    0 讨论(0)
提交回复
热议问题