开发过程中很多时候都需要处理各种各样的日期..有些项目可能还会有自己的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. Oracle数据行拆分多行

    工作和学习中常常会遇到一行要分割成多行数据的情况,在此整理一下做下对比. 单行拆分 如果表数据只有一行,则可以直接在原表上直接使用connect by+正则的方法,比如: select regexp_ ...

  2. Linux下MySQL慢查询分析mysqlsla安装使用

    说明: 操作系统:CentOS 5.X 64位 MySQL版本:mysql-5.5.35 MySQL配置文件:/etc/my.cnf MySQL 数据库存放目录:/data/mysql 实现目的:开启 ...

  3. Linux初识二

    1. Linux上常用的文件管理命令及使用 (1) CP命令:复制文件或文件夹语法格式 cp [OPTION]... [-T] SOURCE DEST // 单源复制 cp [OPTION]... S ...

  4. USB Host的上拉下拉电阻

      关于USB的上下拉电阻,不是随便接个任意阻值的电阻就ok了. 当你的USB为主设备的时候,D+.D-上分别接一个15K的下拉电阻,这样可以使得在没有设备插入的时候,D+.D-上始终保持低电平:当为 ...

  5. webform开发基础

    ASP.NET WebForm C/S(Client/Server):客户端服务器 B/S(Browser/Server):浏览器服务器 C/S和B/S的区别: 首先必须强调的是C/S和B/S并没有本 ...

  6. 嵌入式Linux驱动学习之路(二十六)DM9000C网卡驱动程序

    基于DM9000C的原厂代码修改dm9000c的驱动程序. 首先确认内存的基地址 iobase. 确定中断号码. 打开模块的初始化函数定义. 配置内存控制器的相应时序(结合DM9000C.C的手册). ...

  7. HBase Zookeeper 安装学习

    https://my.oschina.net/hanzhankang/blog/129335 http://blog.itpub.net/27099995/viewspace-1394831/ htt ...

  8. pcl曲面网格模型的三种显示方式

    pcl网格模型有三种可选的显示模式,分别是面片模式(surface)显示,线框图模式(wireframe)显示,点模式(point)显示.默认为面片模式进行显示.设置函数分别为: void pcl:: ...

  9. SQLite源程序分析之回叫机制

    1.SQL访问数据库非常方便,只需简单的三个函数: sqlite3_open(char* szDbFileName, sqlite3 ** db) sqlite3_exec(sqlite3 *db, ...

  10. ajax处理缓冲问题

    1.禁止页面缓存 header("Cache-Control:no-cache"); header("Pragma:no-cache"); header(&qu ...