关于Java日期处理函数

java 代码
  1. 基础知识:   
  2. 公元111日是星期一   
  3. 一年有365天/366天(闰年)   
  4. 闰年规则:原则上41闰,但逢百时400才闰   
  5. 算法推理:   
  6. 365/7=521  
  7. 也就是说公元211日是星期二.....   
  8. 当然闰年会多过1天   
  9.   
  10. 算法总结:A年B月C日   
  11. 1、每过去1年多1天,闰年再多1天,到上一年为止多了几天能算了吧。   
  12. int count=(A-1)+(A-1)/4+(A-1)/400-(A-1)/100;   
  13.   
  14. 2、从1月到上月今年过去的总天数,列个全年的数组能行吧(没考虑今年的闰月)   
  15. int[] M={31,28,31,30,31,30,31,31,30,31,30,31};   
  16. for(int i=1;i<B;i++){   
  17.     count+=M[i];   
  18. }   
  19.   
  20. 3、如果今年是闰年且B>2  
  21. count++   
  22.   
  23. 4、到本月今天总天数   
  24. count+=C;   
  25.   
  26. 5、由于公元111日是星期一,再扣一天除7取余   
  27. (count-1)%7  
  28. 0为星期天,以此类推   
  29.   
  30.   
  31. 根据日期获得星期几   
  32.   
  33. import java.util.Calendar;   
  34. import java.util.Date;   
  35.   
  36. public class CountWeek {   
  37.     
  38.   public static String getWeekOfDate(Date dt){   
  39.   String[] weekDays={"星期日","星期一","星期二","星期三","星期四","星期五","星期六"};   
  40.   Calendar cal=Calendar.getInstance();   
  41.   cal.setTime(dt);   
  42.      
  43.   int w=cal.get(Calendar.DAY_OF_WEEK)-1;   
  44.   if(w<0)w=0;   
  45.   return weekDays[w];   
  46.        
  47.  }   
  48. public static void main(String[] args) {   
  49. System.out.println("今天是:"+CountWeek.getWeekOfDate(new Date()));   
  50. }   
  51. }    
  52.   
  53. public class ManageWeek {   
  54.  //判断两个日期是否在同一周   
  55.  boolean isSameWeekDates(Date date1, Date date2) {   
  56.   Calendar cal1 = Calendar.getInstance();   
  57.   Calendar cal2 = Calendar.getInstance();   
  58.   cal1.setTime(date1);   
  59.   cal2.setTime(date2);   
  60.   int subYear = cal1.get(Calendar.YEAR) - cal2.get(Calendar.YEAR);   
  61.   if (0 == subYear) {   
  62.     if (cal1.get(Calendar.WEEK_OF_YEAR) == cal2.get(Calendar.WEEK_OF_YEAR))   
  63.    return true;   
  64.   }   
  65.   else if (1 == subYear && 11 == cal2.get(Calendar.MONTH)) {   
  66.     // 如果12月的最后一周横跨来年第一周的话则最后一周即算做来年的第一周   
  67.     if (cal1.get(Calendar.WEEK_OF_YEAR) == cal2.get(Calendar.WEEK_OF_YEAR))   
  68.    return true;   
  69.   }   
  70.   else if (-1 == subYear && 11 == cal1.get(Calendar.MONTH)) {   
  71.     if (cal1.get(Calendar.WEEK_OF_YEAR) == cal2.get(Calendar.WEEK_OF_YEAR))   
  72.    return true;   
  73.   }   
  74.   return false;   
  75.  }   
  76.     
  77.     
  78.  //产生周序列   
  79.  public static String  getSeqWeek(){   
  80.   Calendar c = Calendar.getInstance(Locale.CHINA);   
  81.   String week = Integer.toString(c.get(Calendar.WEEK_OF_YEAR));   
  82.   if(week.length()==1)week = "0" + week;   
  83.   String year = Integer.toString(c.get(Calendar.YEAR));     
  84.   return year+week;   
  85.      
  86.  }   
  87.      
  88.   //获得周一的日期   
  89.   public static String getMonday(Date date){   
  90.    Calendar c = Calendar.getInstance();   
  91.    c.setTime(date);   
  92.    c.set(Calendar.DAY_OF_WEEK,Calendar.MONDAY);   
  93.    return new SimpleDateFormat("yyyy-MM-dd").format(c.getTime());   
  94.   }   
  95.      
  96.      
  97.   //获得周五的日期   
  98.   public static String getFriday(Date date){   
  99.    Calendar c = Calendar.getInstance();   
  100.    c.setTime(date);   
  101.    c.set(Calendar.DAY_OF_WEEK,Calendar.FRIDAY);      
  102.    return new SimpleDateFormat("yyyy-MM-dd").format(c.getTime());     
  103.   }   
  104.   
  105. //当前日期前几天或者后几天的日期   
  106.   
  107.  public static String afterNDay(int n){   
  108.         Calendar c=Calendar.getInstance();   
  109.         DateFormat df=new SimpleDateFormat("yyyy-MM-dd");   
  110.         c.setTime(new Date());   
  111.         c.add(Calendar.DATE,n);   
  112.         Date d2=c.getTime();   
  113.         String s=df.format(d2);   
  114.         return s;   
  115.     }   
  116.      
  117.   public static void main(String[] args){   
  118.   
  119.   }   
  120.   
  121. }   
  122.   
  123.   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值