1. 程式人生 > >Java給定日期計算是第幾周

Java給定日期計算是第幾周

public static void main(String[] args) throws ClassNotFoundException,
            IOException, ParseException {
        // TODO Auto-generated method stub
        SimpleDateFormat dateFormatter = new SimpleDateFormat("yyyy-MM-dd");
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        System.out.println("請鍵入日期(如:2008-8-8):");
        String str = br.readLine();
        Date date = dateFormatter.parse(str);
        dateFormatter.applyPattern("D");//
        System.out.println("一年中的第幾天:" + dateFormatter.format(date));

        dateFormatter.applyPattern("d");
        System.out.println("一個月中的第幾天:" + dateFormatter.format(date));

        dateFormatter.applyPattern("w");
        System.out.println("一年中的第幾周:" + dateFormatter.format(date));

        dateFormatter.applyPattern("W");
        System.out.println("一個月中的第幾周:" + dateFormatter.format(date));

        dateFormatter.applyPattern("E");
        System.out.println("一個星期中的天數:" + dateFormatter.format(date));

        br.close();
    }

---------------------

本文來自 meihuiziaaaaaa 的CSDN 部落格 ,全文地址請點選:https://blog.csdn.net/didi7696/article/details/82423349?utm_source=copy 

但是中國的人週日期和外國的總有區別這裡提供一個返回國內周幾日期的工具類可以返回國內正常是周幾;



    /**java 獲取月周  */
    public static Integer getweek(String mydata){
        
        Integer week=null;
        try {
            
            Calendar calendar = Calendar.getInstance();
            calendar.setFirstDayOfWeek(Calendar.MONDAY);





        SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd"); //設定時間格式
        Calendar cal = Calendar.getInstance();
        Date time=sdf.parse(mydata);
        cal.setTime(time);

        //判斷要計算的日期是否是週日,如果是則減一天計算週六的,否則會出問題,計算到下一週去了
        int dayWeek = cal.get(Calendar.DAY_OF_WEEK);//獲得當前日期是一個星期的第幾天
        if(1 == dayWeek) {
            cal.add(Calendar.DAY_OF_MONTH, -1);
        }
        cal.setFirstDayOfWeek(Calendar.MONDAY);//設定一個星期的第一天,按中國的習慣一個星期的第一天是星期一
        int day = cal.get(Calendar.DAY_OF_WEEK);//獲得當前日期是一個星期的第幾天
        cal.add(Calendar.DATE, cal.getFirstDayOfWeek()-day);//根據日曆的規則,給當前日期減去星期幾與一個星期第一天的差值
        System.out.println("所在周星期一的日期:"+sdf.format(cal.getTime()));

            String date1=sdf.format(cal.getTime());
            Date time1=sdf.parse(date1);
            calendar.setTime(time1);
            int  week1=calendar.get(Calendar.WEEK_OF_YEAR);

        System.out.println(cal.getFirstDayOfWeek()+"-"+day+"+6="+(cal.getFirstDayOfWeek()-day+6));

        cal.add(Calendar.DATE, 6);
        System.out.println("所在周星期日的日期:"+sdf.format(cal.getTime()));

            String date2=sdf.format(cal.getTime());
            Date time2=sdf.parse(date2);
            calendar.setTime(time2);
            int week2 =calendar.get(Calendar.WEEK_OF_YEAR);


         week=(week1>=week2?week2:week1);

        }catch (Exception e){
            e.printStackTrace();
            logger.error("fairld!!!",e.fillInStackTrace());
            throw  new RuntimeException(e);
        }

        return week;
    }