【问题标题】:Get Week Dates From Monday to Friday from a Given Date [duplicate]从给定日期获取周一到周五的周日期[重复]
【发布时间】:2013-02-12 01:24:39
【问题描述】:

我想从给定日期获取周一到周五的周日期。

假设给定日期是 6-2-2013

我想要结果:

Monday    4-2-2013
Tuesday   5-2-2013
Wednesday 6-2-2013
Thursday  7-2-2013
Friday    8-2-2013

或者即使我有第 6 周...我怎样才能达到关于结果

我从下面的代码中得到星期数

Calendar c = Calendar.getInstance();
c.set(Calendar.DAY_OF_MONTH, 6);
c.set(Calendar.MONTH, 1);
c.set(Calendar.YEAR, 2013);

int weekNo = c.get(Calendar.WEEK_OF_YEAR);

【问题讨论】:

标签: java android android-calendar


【解决方案1】:

试试这个...我已经对 Achintya Jha 代码进行了编辑并添加了更多更改...效果很好 感谢 Achintya Jha

Calendar c = Calendar.getInstance();
c.set(Calendar.DAY_OF_MONTH, 14);
c.set(Calendar.MONTH, 1);
c.set(Calendar.YEAR, 2013);

int weekNo = c.get(Calendar.WEEK_OF_YEAR);

//Set the Week No
c.set(Calendar.WEEK_OF_YEAR, weekNo);

c.clear();

//Set the Week Year and the Week No
c.set(Calendar.WEEK_OF_YEAR, weekNo);
c.set(Calendar.YEAR, 2013);


SimpleDateFormat formatter = new SimpleDateFormat("EEE dd/MM/yyyy"); // PST`
//Get Week Start Date 
Date startDate = c.getTime();
//Now it will be sunday so add plus one so now it becomes Monday
c.add(Calendar.DATE, 1);
for (int i = 0; i < 5; i++) {
    //From Monday to Friday Dates will be Printed
    System.out.println(formatter.format(c.getTime()));
    c.add(Calendar.DATE, 1);
}

【讨论】:

    【解决方案2】:

    从 2013 年 6 月 2 日开始:

            GregorianCalendar c = new GregorianCalendar(2013, 1, 6);
            c.add(Calendar.DAY_OF_YEAR, Calendar.MONDAY - c.get(Calendar.DAY_OF_WEEK));
            DateFormat df = new SimpleDateFormat("d-M-yyyy");
            while(c.get(Calendar.DAY_OF_WEEK) != Calendar.SATURDAY) {
                if (c.get(Calendar.YEAR) == 2013) {
                    System.out.printf("%-10tA%10s%n", c.getTime(), df.format(c.getTime()));
                }
                c.add(Calendar.DAY_OF_YEAR, 1);
            }
    prints
    
        Monday      4-2-2013
        Tuesday     5-2-2013
        Wednesday   6-2-2013
        Thursday    7-2-2013
        Friday      8-2-2013
    from week 6 of 2013:
    
        GregorianCalendar c = new GregorianCalendar(2013, 0, 1);
        c.add(Calendar.WEEK_OF_YEAR, 6 - 1);
        c.add(Calendar.DAY_OF_YEAR, Calendar.MONDAY - c.get(Calendar.DAY_OF_WEEK));
            DateFormat df = new SimpleDateFormat("d-M-yyyy");
            while(c.get(Calendar.DAY_OF_WEEK) != Calendar.SATURDAY) {
                if (c.get(Calendar.YEAR) == 2013) {
                    System.out.printf("%-10tA%10s%n", c.getTime(), df.format(c.getTime()));
                }
                c.add(Calendar.DAY_OF_YEAR, 1);
            }
    

    打印

    Monday      4-2-2013
    Tuesday     5-2-2013
    Wednesday   6-2-2013
    Thursday    7-2-2013
    Friday      8-2-2013
    

    【讨论】:

      【解决方案3】:
      public static void main(String[] args) {
          getWeekOfDates(2013, 2, 11);
      
      }
      
      private static void getWeekOfDates(int year, int month, int day) {
      
          Calendar c = Calendar.getInstance();
          c.set(Calendar.YEAR, year);
          c.set(Calendar.MONTH, month);
          int weekOfMonth = c.get(Calendar.WEEK_OF_MONTH);
          c.set(Calendar.WEEK_OF_MONTH, weekOfMonth);
      
          DateFormat df = new SimpleDateFormat("EEE dd-MM-yyyy");
          for (int i = 0; i < 5; i++) {
              System.out.println(df.format(c.getTime()));
              c.add(Calendar.DATE, 1);
          }
      
      }
      

      试试这个:我根据您的要求进行了编辑。

      输出:

      Mon 11-03-2013
      Tue 12-03-2013
      Wed 13-03-2013
      Thu 14-03-2013
      Fri 15-03-2013
      

      【讨论】:

      • 我现在就试试这个...谢谢
      • 假设我给定的日期是 14 月 2 日...它甚至添加下周日期(即..)下周星期一和星期二...我想我必须稍微更改您的代码.. .谢谢
      • @sdg 我根据您的要求编辑了我的代码。
      • 是的 thks..但是如果我将日期指定为 14/2..??????结果不一样
      • @sdg 14 是星期四,所以您只想打印星期四和星期五?
      猜你喜欢
      • 2017-09-16
      • 1970-01-01
      • 2015-05-12
      • 1970-01-01
      • 2021-12-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多