开发过程中很多时候都需要处理各种各样的日期..有些项目可能还会有自己的DateUtil....

其实apache commons lang3有一个很好用的日期处理工具类,叫DateUtils...

基本上用他可以解决大部分的时间处理...

我下面列举一些我经常碰到的一些问题的解决办法与可能会遇到的一些日期问题解决办法...

不做过多的解释了,毕竟写了不少注释. (笑)

 package jiang;

 import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Iterator; import org.apache.commons.lang3.time.DateUtils; public class DateUtilsTest {
public static void main(String[] args) {
new DateUtilsTest();
} public DateUtilsTest() {
// 当前时间是大约是2016.1.21 9:36 am,每个test输出可能会查几秒到几分钟,因为例子不是一下子写完的
test1();
test2();
test3();
test4();
test5();
test6();
test7();
test8();
test9();
test10();
test11();
test12();
} public void printFormatDate(Date d) {
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println(df.format(d));
} public void test1() {// 下个月第一天
Date d = new Date();
d = DateUtils.ceiling(d, Calendar.MONTH);// 进位月份
printFormatDate(d);// 2016-02-01 00:00:00
} public void test2() {// 下个月第一天
Date d = new Date();
d = DateUtils.addMonths(d, 1);// 月+1
d = DateUtils.setDays(d, 1);// 设置日为1号
d = DateUtils.truncate(d, Calendar.DATE);// 过滤时分秒
printFormatDate(d);// 2016-02-01 00:00:00
} public void test3() {// 当月最后一天最后一秒
Date d = new Date();
d = DateUtils.ceiling(d, Calendar.MONTH);// 进位月份
d = DateUtils.addMilliseconds(d, -1);// 减少1秒
printFormatDate(d);// 2016-01-31 23:59:59
} public void test4() {// 当月第一天第一秒
Date d = new Date();
d = DateUtils.truncate(d, Calendar.MONTH);// 截取时间到月份
printFormatDate(d);// 2016-01-01 00:00:00
} public void test5() {// 下个月的这个时候
Date d = new Date();
d = DateUtils.addMonths(d, 1);
printFormatDate(d);// 2016-02-21 09:46:02
} public void test6() {// 昨天的这个时候
Date d = new Date();
d = DateUtils.addDays(d, -1);// 增加1月,如果下个月没有这1天,那就不加
printFormatDate(d);// 2016-01-20 09:46:48
} public void test7() {// addMonth的注意点:2月没有29号
Date d = new Date();
d = DateUtils.setDays(d, 29);
d = DateUtils.addMonths(d, 1);// 并没有增加
printFormatDate(d);// 2016-01-29 09:47:45
} public void test8() {// 这个月15号
Date d = new Date();
d = DateUtils.setDays(d, 15);
d = DateUtils.truncate(d, Calendar.DATE);// 截取时间到日
printFormatDate(d);// 2016-01-15 00:00:00
} public void test9() {// 输出包含今天的这个星期的每一天,星期第一天是周日
Date d = new Date();
Iterator<Calendar> c = DateUtils.iterator(d, DateUtils.RANGE_WEEK_SUNDAY);
System.out.println();
while (c.hasNext()) {
printFormatDate(new Date(c.next().getTimeInMillis()));
}
} public void test10() {// 今天是今年第几天
Date d = new Date();
System.out.println(DateUtils.getFragmentInDays(d, Calendar.YEAR));//
} public void test11() {// 这个月第一个周日
Date d = new Date();
d = DateUtils.setDays(d, 1);
while (true) {
Calendar c = Calendar.getInstance();
c.setTime(d);
if (c.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY) {
printFormatDate(d);// 2016-01-03 10:31:43
break;
} else {
d = DateUtils.addDays(d, 1);
}
}
} public void test12() {// 距2月1号还有多少天
Date d = new Date();
Date d2 = new Date();
d2 = DateUtils.ceiling(d, Calendar.MONTH);// 2.1号
long day2 = DateUtils.getFragmentInDays(d2, Calendar.YEAR);//2.1是今年第几天?
long day1 = DateUtils.getFragmentInDays(d, Calendar.YEAR);//今天是今年第几天?
System.out.println(day2 - day1);//
}
}

DateUtils 学习记录1的更多相关文章

  1. Quartz 学习记录1

    原因 公司有一些批量定时任务可能需要在夜间执行,用的是quartz和spring batch两个框架.quartz是个定时任务框架,spring batch是个批处理框架. 虽然我自己的小玩意儿平时不 ...

  2. Java 静态内部类与非静态内部类 学习记录.

    目的 为什么会有这篇文章呢,是因为我在学习各种框架的时候发现很多框架都用到了这些内部类的小技巧,虽然我平时写代码的时候基本不用,但是看别人代码的话至少要了解基本知识吧,另外到底内部类应该应用在哪些场合 ...

  3. Apache Shiro 学习记录4

    今天看了教程的第三章...是关于授权的......和以前一样.....自己也研究了下....我觉得看那篇教程怎么说呢.....总体上是为数不多的精品教程了吧....但是有些地方确实是讲的太少了.... ...

  4. UWP学习记录12-应用到应用的通信

    UWP学习记录12-应用到应用的通信 1.应用间通信 “共享”合约是用户可以在应用之间快速交换数据的一种方式. 例如,用户可能希望使用社交网络应用与其好友共享网页,或者将链接保存在笔记应用中以供日后参 ...

  5. UWP学习记录11-设计和UI

    UWP学习记录11-设计和UI 1.输入和设备 通用 Windows 平台 (UWP) 中的用户交互组合了输入和输出源(例如鼠标.键盘.笔.触摸.触摸板.语音.Cortana.控制器.手势.注视等)以 ...

  6. UWP学习记录10-设计和UI之控件和模式7

    UWP学习记录10-设计和UI之控件和模式7 1.导航控件 Hub,中心控件,利用它你可以将应用内容整理到不同但又相关的区域或类别中. 中心的各个区域可按首选顺序遍历,并且可用作更具体体验的起始点. ...

  7. UWP学习记录9-设计和UI之控件和模式6

    UWP学习记录9-设计和UI之控件和模式6 1.图形和墨迹 InkCanvas是接收和显示墨迹笔划的控件,是新增的比较复杂的控件,这里先不深入. 而形状(Shape)则是可以显示的各种保留模式图形对象 ...

  8. UWP学习记录8-设计和UI之控件和模式5

    UWP学习记录8-设计和UI之控件和模式5 1.日历.日期和时间控件 日期和时间控件提供了标准的本地化方法,可供用户在应用中查看并设置日期和时间值. 有四个日期和时间控件可供选择,选择的依据如下: 日 ...

  9. UWP学习记录7-设计和UI之控件和模式4

    UWP学习记录7-设计和UI之控件和模式4 1.翻转视图 使用翻转视图浏览集合中的图像或其他项目(例如相册中的照片或产品详细信息页中的项目),一次显示一个项目. 对于触摸设备,轻扫某个项将在整个集合中 ...

随机推荐

  1. Windows环境搭建Red5流媒体服务器指南

    Windows环境搭建Red5流媒体服务器指南 测试环境:Windows 7 一.   下载安装程序 red5-server 下载地址 https://github.com/Red5/red5-ser ...

  2. SQL中EXISTS的使用

    1.简介 不相关子查询:子查询的查询条件不依赖于父查询的称为不相关子查询. 相关子查询:子查询的查询条件依赖于外层父查询的某个属性值的称为相关子查询,带EXISTS 的子查询就是相关子查询 EXIST ...

  3. Oracle数据库的 增、删、改、查

    有时候数据库的查询语句一时想不起来,或不确定是不是语句写的正确,现在整理了一下标准的基本查询语句,便于以后牢记: .数据操作语言 DML:添加(insert into).修改(update   set ...

  4. ajaxFileUpload插件

    关键词: $.ajaxFileUpLoad(); data status dataType 参考资料: http://www.cnblogs.com/kissdodog/archive/2012/12 ...

  5. Yii2.0.7 限制user module登录遇到的问题

    在Yii2.0.6的时候我是在以下文件通过以下方法实现的. frontend/modules/user/Module.php namespace frontend\modules\user; clas ...

  6. Linux设备树语法详解

    概念 Linux内核从3.x开始引入设备树的概念,用于实现驱动代码与设备信息相分离.在设备树出现以前,所有关于设备的具体信息都要写在驱动里,一旦外围设备变化,驱动代码就要重写.引入了设备树之后,驱动代 ...

  7. MYSQL 导入Excel数据到数据库中

    1,先把excel的数据整理整齐,如每列都要保持同样的格式:就一列一列的数据: 2,导出excel的数据为CSV格式,即把excel的数据另存为xxxx.csv;: 3,用EditPlus工具将xxx ...

  8. linux几种快速清空文件内容的方法

    linux几种快速清空文件内容的方法 几种快速清空文件内容的方法: $ : > filename #其中的 : 是一个占位符, 不产生任何输出. $ > filename $ echo & ...

  9. Windows批处理:请求远程协助

    公司办公场地分别在两个不同的楼层,处理问题要来回跑,所以思考使用远程访问的方式解决问题.同事大多对电脑不熟悉,使用「通讯软件」和「电话」教同事开启远程桌面沟通成本挺高,另外公司IP地址.账号密码都没统 ...

  10. Transient的作用

    1:transient的作用及其使用方法 当一个对象实现类Serilizable接口,那么这个类就可以被序列化,java的这种序列化的模式为开发者提供了很多的便利. 然而在实际开发中,我们常常遇到这样 ...