A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 刘丁 黑马帝   /  2012-2-15 05:01  /  3147 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 刘丁 于 2012-2-15 18:21 编辑

如何计算某一天是一年中的第几星期。 请高手贴出详细代码 。。

5 个回复

倒序浏览
  1. import java.util.*;
  2. import java.text.SimpleDateFormat;

  3. class  Test
  4. {
  5.         public static void main(String[] args)
  6.         {
  7.                 System.out.println(getWeek("2012-1-18"));     
  8.         }
  9.         public static int getWeek(String date){
  10.         Calendar cal = Calendar.getInstance();
  11.                 cal.setFirstDayOfWeek(Calendar.MONDAY); // 设置每周的第一天为星期一
  12.                 cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);// 每周从周一开始
  13.         SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
  14.         try{
  15.             cal.setTime(format.parse(date));
  16.         } catch (Exception e){
  17.             e.printStackTrace();
  18.         }
  19.         int week = cal.get(Calendar.WEEK_OF_YEAR);
  20.         return week;
  21.     }
  22. }
复制代码
看需要,可取消cal.setFirstDayOfWeek,cal.set 这两句。

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
function week_day($week,$day,$year){
    //第一步算出第几周一共有多少天
    $first_week    =    date('w',strtotime($year.'-01-01')) == 0 ? 7 : date('w',strtotime($year.'-01-01'));
    $total_days    =    $week == 1 ? $day : (($week-2)*7+$day+(7-$first_week)+1);

    //递减每个月天数
    for($i=1;$i<=12;$i++){
        $month_num        =    date('t',strtotime($year.'-'.($i>9 ? $i : '0'.$i).'-01'));
        //$total_days        =    $total_days > $month_num ? ($total_days-$month_num) : $total_days;
        if($total_days>$month_num){
            $total_days    =    $total_days-$month_num;
        }else{
            break;
        }
    }

    return $year.'-'.($i>9 ? $i : '0'.$i).'-'.($total_days > 9 ? $total_days : '0'.$total_days);
}



    function mathweek( $today )
    {
        //一年开始是星期几
        $first_week    =    date('w',strtotime(date('Y',strtotime($today)).'-01-01')) == 0 ? 7 : date('w',strtotime(date('Y',strtotime($today)).'-01-01'));

        //算出本年到$today一共有几天$total_days
//        $month        =    date('m',strtotime($today));
//        $day        =    date('d',strtotime($today));
//        $year        =    date('Y',strtotime($today));
//        $total_days    =    0;
//        for($i=1;$i<intval($month);$i++){//echo '第'.$i.'个月有'.date('t',strtotime("$year-$i-01")).'天<br>';
//            $total_days    +=    date('t',strtotime("$year-$i-01"));
//        }
//        $total_days        =    $total_days+intval($day);
        $total_days        =    date('z',strtotime($today));
        
        //除去第一周不规则周
        $total_days    =    $total_days-(7-$first_week);
        if($total_days%7==0){
            $days    =    $total_days/7+1;
        }else{
            $days    =    ceil($total_days/7)+1;
        }

        return $days;
    }


评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
  1. public class Week {
  2.     public static void main(String[] args){
  3.         int number = weekNumber(2012,2,15);
  4.         System.out.println(number);
  5.     }
  6.     //在weekNumber方法中传进年月日
  7.     public static int weekNumber(int year,int month,int date){
  8.         int mont = month-1;//因为在Calendar类中月份是从0月开始计算,所以按我们平时的减去1
  9.         Calendar calendar = Calendar.getInstance();//获得一个日历
  10.         calendar.set(year, mont, date);//设置日历的年月日
  11.         int number = calendar.get(Calendar.WEEK_OF_YEAR);//段根Calendar类的WEEK_OF_YEAR字段获得设置日历中的日子的星期数
  12.         return number;//返回星期数
  13.     }
  14.    
  15. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
public class Week {

        public static void main(String[] args) throws IOException {
                //输入格式为2012-12-21
                BufferedReader bufr=new BufferedReader(new InputStreamReader(System.in));
                String str=bufr.readLine();
                String[] strs=str.split("-");
                int year=new Integer(strs[0]);
                int month=new Integer(strs[1]);
                int data=new Integer(strs[2]);
                Calendar calendar=Calendar.getInstance();
                calendar.set(year, month-1, data);
                System.out.println(calendar.get(Calendar.WEEK_OF_YEAR));
        }

}

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
本帖最后由 靖美专 于 2012-2-15 15:27 编辑

/**  
   * 根据日期计算属于第几周  
   * @param date 格式 yyyy-MM-dd  
   * @throws ParseException  
   */  
  public static int getWeekOfYear(String date){   
  
      try {   
          SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");   
          Calendar cal = Calendar.getInstance();   
          cal.setFirstDayOfWeek(Calendar.MONDAY); // 设置每周的第一天为星期一   
          //cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);// 每周从周一开始   
          cal.setMinimalDaysInFirstWeek(1); // 设置每周最少为1天   
          cal.setTime(df.parse(date));   
          return cal.get(Calendar.WEEK_OF_YEAR);   
      } catch (Exception e) {   
    e.printStackTrace();   
}   
      return 0;   
  }  
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马