### Java日期处理大全:掌握时间的艺术 在Java编程中,日期和时间的处理是不可或缺的一部分,尤其是在涉及到数据记录、时间戳、定时任务等场景时。本文将深入探讨Java中的日期处理技术,涵盖从基础到进阶的各种技巧和知识点,帮助读者全面理解并灵活运用Java的日期处理功能。 #### 一、利用Calendar类进行日期操作 1. **初始化Calendar对象**: ```java Calendar time = Calendar.getInstance(); time.clear(); ``` 此处的`clear()`方法将Calendar对象重置为默认值,即1970年1月1日00:00:00 GMT。 2. **设置和获取日期部分**: 使用`set()`方法可以设置Calendar的特定字段,如年、月、日等。值得注意的是,月份的计数是从0开始的,即1月对应于`Calendar.JANUARY`或0。 ```java time.set(Calendar.YEAR, year); time.set(Calendar.MONTH, month - 1); // 注意月份是从0开始的 int day = time.getActualMaximum(Calendar.DAY_OF_MONTH); // 获取当月的最大天数 ``` 3. **Date与Calendar之间的转换**: - 将Calendar转换为Date:`Calendar cal = Calendar.getInstance(); Date date = cal.getTime();` - 将Date转换为Calendar:`Date date = new Date(); Calendar cal = Calendar.getInstance(); cal.setTime(date);` #### 二、日期格式化与字符串转换 使用`SimpleDateFormat`类可以方便地进行日期格式化和字符串转换。例如,将当前日期转换为“年-月-日 时:分:秒”格式: ```java Date date = new Date(); SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String time = df.format(date); ``` #### 三、计算一周的第一天和一周的周数 1. **确定一年中某一天属于第几周**: ```java Calendar cal = Calendar.getInstance(); cal.set(Calendar.YEAR, year); cal.set(Calendar.MONTH, month - 1); cal.set(Calendar.DAY_OF_MONTH, day); int weekNo = cal.get(Calendar.WEEK_OF_YEAR); ``` 2. **计算一年中第一周的第一天**: ```java SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd"); Calendar cal = Calendar.getInstance(); cal.set(Calendar.YEAR, year); cal.set(Calendar.WEEK_OF_YEAR, 1); cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY); System.out.println(df.format(cal.getTime())); // 输出:2006-01-02 ``` #### 四、日期加减操作:add() vs roll() 1. **使用add()方法**:此方法会考虑日期的边界,如添加月份超过最大天数会自动跳转到下个月。 ```java cal.add(Calendar.DATE, -4); // 减去4天 cal.add(Calendar.DATE, 4); // 加上4天 ``` 2. **使用roll()方法**:不会考虑日期边界,适用于精确控制日期加减,如需保持在同一个月,即使加上的天数超过当月天数也会停留在该月最后一天。 ```java cal.roll(Calendar.DATE, -4); // 减去4天 cal.roll(Calendar.DATE, 4); // 加上4天 ``` #### 五、计算两个日期之间的时间差 通过Calendar对象的`getTimeInMillis()`方法获取毫秒级时间戳,然后相减得到两个日期间的时间差,最后除以相应的单位(秒、分钟、小时等)转换为所需的格式。 ```java public int getIntervalDays(Calendar startDay, Calendar endDay) { if (startDay.after(endDay)) { Calendar temp = startDay; startDay = endDay; endDay = temp; } long startTime = startDay.getTimeInMillis(); long endTime = endDay.getTimeInMillis(); long interval = (endTime - startTime) / (1000 * 60 * 60 * 24); // 计算间隔天数 return (int) interval; } ``` 以上内容涵盖了Java日期处理的主要方面,从基本的日期设置和获取,到高级的日期计算和格式化。通过理解和掌握这些知识点,开发者可以更加高效地处理各种与日期相关的问题,提升程序的实用性和灵活性。
java(日期处理)
第一部分关于JAVA的Date (参考关于JAVA的Date总结)
Java代码
1.计算某一月份的最大天数
Calendar time=Calendar.getInstance();
time.clear();
time.set(Calendar.YEAR,year); //year 为 int
time.set(Calendar.MONTH,i-1);//注意,Calendar对象默认一月为0
int day=time.getActualMaximum(Calendar.DAY_OF_MONTH);//本月份的天数
注:在使用set方法之前,必须先clear一下,否则很多信息会继承自系统当前时间
2.Calendar和Date的转化
(1) Calendar转化为Date
Calendar cal=Calendar.getInstance();
Date date=cal.getTime();
(2) Date转化为Calendar
Date date=new Date();
Calendar cal=Calendar.getInstance();
cal.setTime(date);
3.格式化输出日期时间 (这个用的比较多)
Date date=new Date();
String time=df.format(date);
System.out.println(time);
4.计算一年中的第几星期
(1)计算某一天是一年中的第几星期
Calendar cal=Calendar.getInstance();
cal.set(Calendar.YEAR, 2006);
cal.set(Calendar.MONTH,;
cal.set(Calendar.DAY_OF_MONTH, 3);
int weekno=cal.get(Calendar.WEEK_OF_YEAR);
(2)计算一年中的第几星期是几号
SimpleDateFormat df=new SimpleDateFormat("yyyy-MM-dd");
Calendar cal=Calendar.getInstance();
cal.set(Calendar.YEAR, 2006);
cal.set(Calendar.WEEK_OF_YEAR, 1);
cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
System.out.println(df.format(cal.getTime()));
输出:
2006-01-02
5.add()和roll()的用法(不太常用)
(1)add()方法
SimpleDateFormat df=new SimpleDateFormat("yyyy-MM-dd");
Calendar cal=Calendar.getInstance();
cal.set(Calendar.YEAR, 2006);
cal.set(Calendar.MONTH,;
剩余38页未读,继续阅读
- 粉丝: 3
- 资源: 4
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助