当前位置: 首页 > 知识库问答 >
问题:

如何从java中的特定日期获取前7个日期?我现在有7次约会,但我想从特定的日期开始

黎鹤轩
2023-03-14
//explain
public class DateLoop {
    static String finalDate; 
    static String particularDate;

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

        SimpleDateFormat sdf = new SimpleDateFormat("d-M-yyyy ");
        Calendar cal = Calendar.getInstance();
        particularDate = "2-1-2018";
        // get starting date
        cal.add(Calendar.DAY_OF_YEAR, -7);

        // loop adding one day in each iteration
        for(int i = 0; i< 7; i++){
            cal.add(Calendar.DAY_OF_YEAR, 1);
            finalDate =sdf.format(cal.getTime());
            System.out.println(finalDate);
            //ie, its giving previous 7 dates from present date, but I want
            //particular date... thanks in advance
        }
    }

}

即,它给出了当前日期的前7个日期,但我想要特定日期的前7个日期。

共有3个答案

郦昆
2023-03-14

如果你想从一些数据中得到一些数据,可以做如下的事情。

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);
}
荀辰钊
2023-03-14

正如Uta Alexandru和Basil Bourque已经说过的,不要使用长期过时的类SimpleDateFormatCalendarjava.time,现代Java日期和时间API也称为JSR-310,使用起来要好得多:

    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);
    }

这张照片是:

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

代码不仅稍微简单、简短,更重要的是,它更清晰、更自然。

你当然可以。它至少需要Java6。

  • 在8Java及以后,新的API内置。
  • 在Java6和7中获得Threeten Backport,新类的backport(Threeten for JSR 310)。
  • 在Android上,使用Android版的Threeten Backport。它被称为ThreeTenABP。
  • Oracle教程:日期时间,解释如何使用java。时间
  • Three Ten Backport项目
  • ThreeTenABP,Android版ThreeTen Backport
  • 问题:如何在Android项目中使用ThreeTenABP,并给出非常详尽的解释
  • Java规范请求(JSR)310,现代日期和时间API首次在这里被描述
林涵映
2023-03-14
LocalDate.of( 2018 , Month.JANUARY , 23 )
         .minusDays( … )

您使用的是麻烦的旧日期时间类,它们现在是遗留的,被java所取代。时间课。

使用LocalDate仅用于不含时间的日期。

使用Month枚举。

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

使用月份数字,1-12月份为1-12。

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

收集一系列日期。

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. 
}

对于早期的Android,请使用ThreeTen-Backport和ThreeTenABP项目。

 类似资料:
  • 问题内容: 我有一个日期,以及如何使所有日期都落在给定日期所属的一周的Java中? 有人可以帮我这个吗。 我正在尝试获取给定日期的星期日期,我已经解释了为什么这个问题不是重复的,请在评论前阅读。 问题答案: 您可以尝试以下方式, 输出值

  • 问题内容: 如何找出上一个(上一个)“星期五”或指定日期之后的其他日期的日期? 问题答案: 我不会给出答案(请先尝试一下!),但是,也许这些技巧可以为您提供帮助。 您首先需要确定您所在的星期几。您可能想看一下Java的Calendar类,以了解如何做到这一点。 确定日期后,请考虑模数运算符以及如何使用该运算符向后移动以从当前所在的日期开始寻找所需的前一天。(请记住,一周是7天,一周中的每一天在这7

  • 我与当下一起工作。js和我有3个不同的日期,例如。 2018年7月30日 2018年6月12日 2018年5月10日 现在,我尝试获取从这些日期到今天(如果少于7天前)或到今天(如果超过7天前)的周数的差值,并将其放置在几个跨度中。 更新感谢托马斯! 我得到: 我还需要什么: > 不显示,这应该是 这是实际的小提琴。

  • 我试着从我的应用程序(ICS及以上)读取本机日历事件,但有时它工作,有时它显示一些不正确的值。目前我正在使用这段代码,谁能告诉我,我哪里出错了…

  • 问题内容: 我想100天前从13年4月8日开始作为日期。 如何使用pl / sql执行此操作? 问题答案: 假设情况是您所处的字符串。因此,您需要将其转换为using函数,然后简单地减去100个文字。 的SQL 2 from dual 3 / RES 29-12-2012 PL / SQL 2 l_res_date date; 3 l_in_date varchar2(11) := ‘08-APR

  • 问题内容: 在我的VB.NET项目中,使用JSON.NET,我从Web API获得了一个JSON,该JSON的值表示格式中的日期,我想简单地获取该值。 JSON大致如下所示: 所以我应该序列化它,然后使用该值执行操作,对吗?但是,当我将该键值放入变量中时,日期格式会自动更改! 我需要具有从检索到的JSON中获取的Date。我看到解决此问题的两种方法:将其手动转换,或使用正则表达式直接获取键值对-两