用Java或JavaScript显示日期名称为星期五的月份或年份的日期?

用Java或JavaScript显示日期名称为星期五的月份或年份的日期?,java,javascript,Java,Javascript,我如何用Java或JavaScript显示以星期五命名的月份或年份的日期 例如,对于2011年12月,代码将显示: 2011年2月12日 2011年9月12日 2011年12月16日 2011年12月23日 2011年12月30日 类似于以下内容: newsimpledateformat(“yyyy-MM-dd-EEEE”,Locale.US).format(date)) 例如,对于Dec 19,它打印: 2011年12月19日星期一 newsimpledateformat(“yyyy-MM-

我如何用Java或JavaScript显示以星期五命名的月份或年份的日期

例如,对于2011年12月,代码将显示:

  • 2011年2月12日
  • 2011年9月12日
  • 2011年12月16日
  • 2011年12月23日
  • 2011年12月30日

    • 类似于以下内容:

      newsimpledateformat(“yyyy-MM-dd-EEEE”,Locale.US).format(date))

      例如,对于Dec 19,它打印:
      2011年12月19日星期一

      newsimpledateformat(“yyyy-MM-dd-EEEE”,Locale.US).format(date))

      例如,对于Dec 19,它打印:
      2011-12-19星期一

      在java中,您可以使用java.util.Calendar类

      Calendar c = Calendar.newInstance();
      c.setTime(System.currentTimeInMills());
      if (c.get(Calendar.DAY_OF_WEEK) == Calendar.FRIDAY) {
        .. do your stuff here
      }
      
      此外,您还可以迭代几天:

      Calendar c = Calendar.newInstance();
      c.add(1, Calendar.DAY);
      

      在java中,可以使用java.util.Calendar类

      Calendar c = Calendar.newInstance();
      c.setTime(System.currentTimeInMills());
      if (c.get(Calendar.DAY_OF_WEEK) == Calendar.FRIDAY) {
        .. do your stuff here
      }
      
      此外,您还可以迭代几天:

      Calendar c = Calendar.newInstance();
      c.add(1, Calendar.DAY);
      
      在Java中:

      for (int i = 1; i <= 31; i++) {
          Calendar cal = new GregorianCalendar(2011, Calendar.DECEMBER, i);
          if (cal.get(Calendar.DAY_OF_WEEK) == Calendar.FRIDAY) {
               // process date
          }
      }
      
      Java中(inti=1;i的
      for:

      for (int i = 1; i <= 31; i++) {
          Calendar cal = new GregorianCalendar(2011, Calendar.DECEMBER, i);
          if (cal.get(Calendar.DAY_OF_WEEK) == Calendar.FRIDAY) {
               // process date
          }
      }
      
      for(inti=1;i在Javascript中

      function getFridays(year,month){ 
          var fridays=new Array();
          var i=0;
              var tdays=new Date(year, month, 0).getDate();
              for(date=0;date<=tdays;date++)     {
                  sdate=(date<10)?"0"+date:date; 
                  dd=(month+1)+"/"+sdate+"/"+year;  
                  var day=new Date(year,month,date); 
                  if(day.getDay() == 5 )  
                  {  
                      fridays[i++]=dd;
                  }    
              }   
              return fridays; 
          } 
      
      函数getFridays(年、月){
      var fridays=新数组();
      var i=0;
      var tdays=新日期(年、月、0).getDate();
      对于(Javascript中的日期=0;日期)

      function getFridays(year,month){ 
          var fridays=new Array();
          var i=0;
              var tdays=new Date(year, month, 0).getDate();
              for(date=0;date<=tdays;date++)     {
                  sdate=(date<10)?"0"+date:date; 
                  dd=(month+1)+"/"+sdate+"/"+year;  
                  var day=new Date(year,month,date); 
                  if(day.getDay() == 5 )  
                  {  
                      fridays[i++]=dd;
                  }    
              }   
              return fridays; 
          } 
      
      函数getFridays(年、月){
      var fridays=新数组();
      var i=0;
      var tdays=新日期(年、月、0).getDate();
      
      对于(date=0;date这是我的JavaScript尝试。我怀疑它的效率非常低,您必须按照JavaScript预期的方式提供月份,即一月是0,十二月是11

      function showFridays(year, month) {
          var dates = [];
      
          var months = [];
      
          if(!month){ 
              for(var i=0; i<12; i++) {
                  months.push(i);
              }
          }
          else {
              months.push(month);
          }
      
          for(var i=0; i<months.length; i++){
              var month_number = months[i];
      
              for(var j=1; j<32; j++) {
                  var date = new Date(year, month_number, j)
      
                      // Because e.g. new Date(2011,2,31) will evaluate to 3rd March, check that date.getMonth() returns the same number as we passed in, so that we reject duplicate dates.
      
                  if(date.getDay() == 5 && date.getMonth() == month_number) {
                      dates.push(date);
                  }
              }
          }
      
          for(var i=0; i<dates.length; i++) {
              console.log(dates[i].toLocaleString());
          }
      }
      
      功能显示星期五(年、月){
      var日期=[];
      var月数=[];
      如果(!月){
      
      对于(var i=0;i这是我的JavaScript尝试。我怀疑它的效率非常低,您必须按照JavaScript预期的方式提供月份,即1月为0,12月为11

      function showFridays(year, month) {
          var dates = [];
      
          var months = [];
      
          if(!month){ 
              for(var i=0; i<12; i++) {
                  months.push(i);
              }
          }
          else {
              months.push(month);
          }
      
          for(var i=0; i<months.length; i++){
              var month_number = months[i];
      
              for(var j=1; j<32; j++) {
                  var date = new Date(year, month_number, j)
      
                      // Because e.g. new Date(2011,2,31) will evaluate to 3rd March, check that date.getMonth() returns the same number as we passed in, so that we reject duplicate dates.
      
                  if(date.getDay() == 5 && date.getMonth() == month_number) {
                      dates.push(date);
                  }
              }
          }
      
          for(var i=0; i<dates.length; i++) {
              console.log(dates[i].toLocaleString());
          }
      }
      
      功能显示星期五(年、月){
      var日期=[];
      var月数=[];
      如果(!月){
      对于(var i=0;i定义此函数:

      function getFridays(month, year){
          var ret = [];
          for(var i = 1; i <= 31; i++){
              var date = new Date();
              date.setDate(i);
              date.setMonth(month - 1);
              date.setFullYear(year);
              if(date.getDay() === 5){
                  var today = date.getDate() + '/' + (date.getMonth() + 1) + '/' + date.getFullYear();
                  ret.push(today);
      
              }
          }
          return ret;
      }
      
      这里有一个JavaScript解决方案


      编辑:根据对另一个解决方案的评论更新逻辑:

      function getFridays(month, year){
          var ret = [];
          for(var i = 1; i <= 7; i++){
              var date = new Date();
              date.setDate(i);
              date.setMonth(month - 1);
              date.setFullYear(year);
              if(date.getDay() === 5){
                  var today = date.getDate() + '/' + (date.getMonth() + 1) + '/' + date.getFullYear();
                  ret.push(today);
                  for(var j = 1; j < 5; j++){
                      var d = date.getDate() + j * 7;
                      if(d <= 31){
                          ret.push((d) + '/' + (date.getMonth() + 1) + '/' + date.getFullYear());
                      }
                  }
              }
          }
          return ret;
      }
      
      函数getFridays(月、年){
      var-ret=[];
      对于(var i=1;i定义此函数:

      function getFridays(month, year){
          var ret = [];
          for(var i = 1; i <= 31; i++){
              var date = new Date();
              date.setDate(i);
              date.setMonth(month - 1);
              date.setFullYear(year);
              if(date.getDay() === 5){
                  var today = date.getDate() + '/' + (date.getMonth() + 1) + '/' + date.getFullYear();
                  ret.push(today);
      
              }
          }
          return ret;
      }
      
      这里有一个JavaScript解决方案


      编辑:根据对另一个解决方案的评论更新逻辑:

      function getFridays(month, year){
          var ret = [];
          for(var i = 1; i <= 7; i++){
              var date = new Date();
              date.setDate(i);
              date.setMonth(month - 1);
              date.setFullYear(year);
              if(date.getDay() === 5){
                  var today = date.getDate() + '/' + (date.getMonth() + 1) + '/' + date.getFullYear();
                  ret.push(today);
                  for(var j = 1; j < 5; j++){
                      var d = date.getDate() + j * 7;
                      if(d <= 31){
                          ret.push((d) + '/' + (date.getMonth() + 1) + '/' + date.getFullYear());
                      }
                  }
              }
          }
          return ret;
      }
      
      函数getFridays(月、年){
      var-ret=[];
      
      对于(var i=1;i,这里是我的最佳Javascript尝试

      它的工作原理是通过算法确定一个月的第一个星期五的日期,然后一次向前7天,直到这个月结束

      // find all dates that fall on a particular day of the week
      // for the given year and month
      
      function getDaysOfMonth(year, month, dow) {
          --month;                                    // to correct for JS date functions
          var d = new Date(year, month, 1);           // get the first of the month
          var dow_first = d.getDay();                 // find out what DoW that was 
          var date = (7 + dow - dow_first) % 7 + 1;   // and the first day matching dow
      
          var dates = [];
          d.setDate(date);
          do {
              dates.push(new Date(d));      // store a copy of that date
              date += 7;                    // go forward a week
              d.setDate(date);            
          } while (d.getMonth() === month); // until the end of the month
      
          return dates;
      }
      
      演示,星期五(JS格式的第5天):

      document.write(getDaysOfMonth(2011,12,5).join(“
      ”);
      请参阅完整的工作演示


      要获得全年的日期,只需调用它12次,然后合并结果;-)

      以下是我的最佳Javascript尝试

      它的工作原理是通过算法确定一个月的第一个星期五的日期,然后一次向前7天,直到这个月结束

      // find all dates that fall on a particular day of the week
      // for the given year and month
      
      function getDaysOfMonth(year, month, dow) {
          --month;                                    // to correct for JS date functions
          var d = new Date(year, month, 1);           // get the first of the month
          var dow_first = d.getDay();                 // find out what DoW that was 
          var date = (7 + dow - dow_first) % 7 + 1;   // and the first day matching dow
      
          var dates = [];
          d.setDate(date);
          do {
              dates.push(new Date(d));      // store a copy of that date
              date += 7;                    // go forward a week
              d.setDate(date);            
          } while (d.getMonth() === month); // until the end of the month
      
          return dates;
      }
      
      演示,星期五(JS格式的第5天):

      document.write(getDaysOfMonth(2011,12,5).join(“
      ”);
      请参阅完整的工作演示


      要获取全年的日期,只需调用12次,然后合并结果;-)

      以下是一个Java示例,适用于2011年12月。更改日期以适合您的用例:

      Calendar beginCalendar = Calendar.getInstance();        
      //initialize the date to the first day the desired year and month
      //Below example initializes to 1st of December 2011
      beginCalendar.set(2011,Calendar.DECEMBER,1);            
      Calendar endCalendar = Calendar.getInstance();
      //set the end date to the end of the month using the begin date
      endCalendar.set(beginCalendar.get(Calendar.YEAR),beginCalendar.get(Calendar.MONTH),beginCalendar.getActualMaximum(Calendar.DAY_OF_MONTH));
      
      //loop through till we hit the first friday of the month
      while(beginCalendar.get(Calendar.DAY_OF_WEEK) != Calendar.FRIDAY){
          beginCalendar.add(Calendar.DATE,1);             
      }
      
      //loop from the first friday of the month till the end of month and add 1 week in each iteration. 
      while (beginCalendar.compareTo(endCalendar) <= 0) {             
          System.out.println(beginCalendar.getTime().toString());//this prints all the fridays in the given month
          beginCalendar.add(Calendar.WEEK_OF_YEAR, 1);                
      }
      
      日历beginCalendar=Calendar.getInstance(); //将日期初始化为所需年和月的第一天 //以下示例初始化为2011年12月1日 beginCalendar.set(2011年,日历,12月1日); Calendar endCalendar=Calendar.getInstance(); //使用开始日期将结束日期设置为月底 endCalendar.set(beginCalendar.get(Calendar.YEAR)、beginCalendar.get(Calendar.MONTH)、beginCalendar.getActualMaximum(Calendar.DAY/u MONTH)); //循环直到我们到达这个月的第一个星期五 while(beginCalendar.get(Calendar.DAY\u OF u WEEK)!=Calendar.周五){ 添加(日历日期,1); } //循环从月的第一个星期五到月底,并在每个迭代中添加1周。
      while(beginCalendar.compareTo(endCalendar)下面是一个Java示例,适用于2011年12月。更改日期以适合您的用例:

      Calendar beginCalendar = Calendar.getInstance();        
      //initialize the date to the first day the desired year and month
      //Below example initializes to 1st of December 2011
      beginCalendar.set(2011,Calendar.DECEMBER,1);            
      Calendar endCalendar = Calendar.getInstance();
      //set the end date to the end of the month using the begin date
      endCalendar.set(beginCalendar.get(Calendar.YEAR),beginCalendar.get(Calendar.MONTH),beginCalendar.getActualMaximum(Calendar.DAY_OF_MONTH));
      
      //loop through till we hit the first friday of the month
      while(beginCalendar.get(Calendar.DAY_OF_WEEK) != Calendar.FRIDAY){
          beginCalendar.add(Calendar.DATE,1);             
      }
      
      //loop from the first friday of the month till the end of month and add 1 week in each iteration. 
      while (beginCalendar.compareTo(endCalendar) <= 0) {             
          System.out.println(beginCalendar.getTime().toString());//this prints all the fridays in the given month
          beginCalendar.add(Calendar.WEEK_OF_YEAR, 1);                
      }
      
      日历beginCalendar=Calendar.getInstance(); //将日期初始化为所需年和月的第一天 //以下示例初始化为2011年12月1日 beginCalendar.set(2011年,日历,12月1日); Calendar endCalendar=Calendar.getInstance(); //使用开始日期将结束日期设置为月底 endCalendar.set(beginCalendar.get(Calendar.YEAR)、beginCalendar.get(Calendar.MONTH)、beginCalendar.getActualMaximum(Calendar.DAY/u MONTH)); //循环直到我们到达这个月的第一个星期五 while(beginCalendar.get(Calendar.DAY\u OF u WEEK)!=Calendar.周五){ 添加(日历日期,1); } //循环从月的第一个星期五到月底,并在每个迭代中添加1周。
      while(beginCalendar.compareTo(endCalendar)或者?它们都是非常不同的东西。@Matt:当然,但这家伙可能在服务器上用Java做web应用,而不管显示是在服务器上还是在客户端。你知道如何用Java显示吗?请让我知道。可能的重复:Java到Javascript就像汽车到地毯一样。或者?它们都是非常不同的东西@Matt:当然可以,但这家伙可能在服务器上用Java做一个web应用程序,而不管显示是在服务器上还是在客户端。你知道如何用Java显示吗?请告诉我。可能的重复:Java到Javascript就像汽车到地毯一样。如果我没弄错的话,他想知道12月的所有周五。不是第十天E