java中关于星期时间的操作(收藏)

本文介绍了一个实用的Java类,用于处理日期与星期相关的操作,包括判断两个日期是否属于同一周、获取指定日期所在周的周一和周五等。此外,还提供了将字符串转换为日期的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

java 代码
  1. java中关于星期时间的操作   
  2.   
  3. 在最近的一个OA中,我需要判断两个日期是否是同一周,根据一个给定的日期获得所属周的周一和周五的日期。   
  4.   
  5. 在完成以上任务时,我发现Calendar 的确是一个功能强大的class。   
  6.   
  7. 下面给出源码,供兄弟们参考指正。   
  8.   
  9.     
  10.   
  11. /*  
  12.  * 创建日期 2005-3-30  
  13.  
  14. package com.infoearth;  
  15.  
  16. import java.sql.Timestamp;  
  17. import java.text.*;  
  18. import java.util.*;  
  19. /**  
  20.  * @李春雷  
  21.  *  
  22. public class ManageWeek {  
  23.  //判断两个日期是否在同一周  
  24.  boolean isSameWeekDates(Date date1, Date date2) {  
  25.   Calendar cal1 = Calendar.getInstance();  
  26.   Calendar cal2 = Calendar.getInstance();  
  27.   cal1.setTime(date1);  
  28.   cal2.setTime(date2);  
  29.   int subYear = cal1.get(Calendar.YEAR) - cal2.get(Calendar.YEAR);  
  30.   if (0 == subYear) {  
  31.     if (cal1.get(Calendar.WEEK_OF_YEAR) == cal2.get(Calendar.WEEK_OF_YEAR))  
  32.    return true;  
  33.   }  
  34.   else if (1 == subYear && 11 == cal2.get(Calendar.MONTH)) {  
  35.     // 如果12月的最后一周横跨来年第一周的话则最后一周即算做来年的第一周  
  36.     if (cal1.get(Calendar.WEEK_OF_YEAR) == cal2.get(Calendar.WEEK_OF_YEAR))  
  37.    return true;  
  38.   }  
  39.   else if (-1 == subYear && 11 == cal1.get(Calendar.MONTH)) {  
  40.     if (cal1.get(Calendar.WEEK_OF_YEAR) == cal2.get(Calendar.WEEK_OF_YEAR))  
  41.    return true;  
  42.   }  
  43.   return false;  
  44.  }  
  45.    
  46.    
  47.  //产生周序列  
  48.  public static String  getSeqWeek(){  
  49.   Calendar c = Calendar.getInstance(Locale.CHINA);  
  50.   String week = Integer.toString(c.get(Calendar.WEEK_OF_YEAR));  
  51.   if(week.length()==1)week = "0" + week;  
  52.   String year = Integer.toString(c.get(Calendar.YEAR));    
  53.   return year+week;  
  54.     
  55.  }  
  56.     
  57.   //获得周一的日期  
  58.   public static String getMonday(Date date){  
  59.    Calendar c = Calendar.getInstance();  
  60.    c.setTime(date);  
  61.    c.set(Calendar.DAY_OF_WEEK,Calendar.MONDAY);  
  62.    return new SimpleDateFormat("yyyy-MM-dd").format(c.getTime());  
  63.   }  
  64.     
  65.     
  66.   //获得周五的日期  
  67.   public static String getFriday(Date date){  
  68.    Calendar c = Calendar.getInstance();  
  69.    c.setTime(date);  
  70.    c.set(Calendar.DAY_OF_WEEK,Calendar.FRIDAY);     
  71.    return new SimpleDateFormat("yyyy-MM-dd").format(c.getTime());    
  72.   }  
  73.  
  74. //当前日期前几天或者后几天的日期  
  75.  
  76.  public static String afterNDay(int n){  
  77.         Calendar c=Calendar.getInstance();  
  78.         DateFormat df=new SimpleDateFormat("yyyy-MM-dd");  
  79.         c.setTime(new Date());  
  80.         c.add(Calendar.DATE,n);  
  81.         Date d2=c.getTime();  
  82.         String s=df.format(d2);  
  83.         return s;  
  84.     }  
  85.     
  86.   public static void main(String[] args){  
  87.  
  88.   }  
  89.  
  90. }  
  91.  
  92.    
  93.  
  94. 经常碰到把一个字符串转成一个Date的问题,其实就3句话:  
  95.  
  96. String myString = "2005/12/20";  
  97.  
  98. SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd", Locale.CHINA);  
  99. Date d = sdf.parse(myString);  
  100.  
  101. 下面是个例子,存档  
  102.  
  103.  
  104. package formatdatetime;  
  105.  
  106. import java.text.*;  
  107. import java.util.*;  
  108.  
  109. /**  
  110.  * @author Administrator  
  111.  *  
  112.  * TODO 要更改此生成的类型注释的模板,请转至  
  113.  * 窗口 - 首选项 - Java - 代码样式 - 代码模板  
  114.  */  
  115. public class StringToDateTimeTest {   
  116.   
  117.  public static void main(String[] args) {   
  118.   
  119.   String myString = "Tue Oct 18 04:11:56 CST 2005";   
  120.   //String myString = "2005/12/20";   
  121.   try {   
  122.    SimpleDateFormat sdf = new SimpleDateFormat("EEE MMM dd HH:mm:ss zzz yyyy", Locale.US);   
  123.    //SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd", Locale.CHINA);   
  124.    Date d = sdf.parse(myString);   
  125.    Calendar c = Calendar.getInstance();   
  126.    c.setTime(d);   
  127.    String s = new SimpleDateFormat("yyyy-MM-dd").format(c.getTime());   
  128.    System.out.println(s);   
  129.       
  130.   } catch (Exception e) {   
  131.    e.printStackTrace();   
  132.   }   
  133.  }   
  134. }   
  135.   
  136.   
  137. 转自:http://blog.youkuaiyun.com/lcllcl987/archive/2005/04/04/336050.aspx   
  138.   
  139.      
  140.   
  141. 原创文章如转载,请注明:转载自:巴士飞扬-技术BLOG : http://www.busfly.cn/   
  142.   
  143. 本文链接地址:http://www.busfly.cn/post/137.html    
  144.   
  145. 如果你喜欢本文,请顶一下,支持我,你的支持是我继续发好文章的最大动力。谢谢。    
  146. 好东西需要分享,快把本文发给你的朋友吧~!~   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值