DateUtils 学习记录1
开发过程中很多时候都需要处理各种各样的日期..有些项目可能还会有自己的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的更多相关文章
- Quartz 学习记录1
原因 公司有一些批量定时任务可能需要在夜间执行,用的是quartz和spring batch两个框架.quartz是个定时任务框架,spring batch是个批处理框架. 虽然我自己的小玩意儿平时不 ...
- Java 静态内部类与非静态内部类 学习记录.
目的 为什么会有这篇文章呢,是因为我在学习各种框架的时候发现很多框架都用到了这些内部类的小技巧,虽然我平时写代码的时候基本不用,但是看别人代码的话至少要了解基本知识吧,另外到底内部类应该应用在哪些场合 ...
- Apache Shiro 学习记录4
今天看了教程的第三章...是关于授权的......和以前一样.....自己也研究了下....我觉得看那篇教程怎么说呢.....总体上是为数不多的精品教程了吧....但是有些地方确实是讲的太少了.... ...
- UWP学习记录12-应用到应用的通信
UWP学习记录12-应用到应用的通信 1.应用间通信 “共享”合约是用户可以在应用之间快速交换数据的一种方式. 例如,用户可能希望使用社交网络应用与其好友共享网页,或者将链接保存在笔记应用中以供日后参 ...
- UWP学习记录11-设计和UI
UWP学习记录11-设计和UI 1.输入和设备 通用 Windows 平台 (UWP) 中的用户交互组合了输入和输出源(例如鼠标.键盘.笔.触摸.触摸板.语音.Cortana.控制器.手势.注视等)以 ...
- UWP学习记录10-设计和UI之控件和模式7
UWP学习记录10-设计和UI之控件和模式7 1.导航控件 Hub,中心控件,利用它你可以将应用内容整理到不同但又相关的区域或类别中. 中心的各个区域可按首选顺序遍历,并且可用作更具体体验的起始点. ...
- UWP学习记录9-设计和UI之控件和模式6
UWP学习记录9-设计和UI之控件和模式6 1.图形和墨迹 InkCanvas是接收和显示墨迹笔划的控件,是新增的比较复杂的控件,这里先不深入. 而形状(Shape)则是可以显示的各种保留模式图形对象 ...
- UWP学习记录8-设计和UI之控件和模式5
UWP学习记录8-设计和UI之控件和模式5 1.日历.日期和时间控件 日期和时间控件提供了标准的本地化方法,可供用户在应用中查看并设置日期和时间值. 有四个日期和时间控件可供选择,选择的依据如下: 日 ...
- UWP学习记录7-设计和UI之控件和模式4
UWP学习记录7-设计和UI之控件和模式4 1.翻转视图 使用翻转视图浏览集合中的图像或其他项目(例如相册中的照片或产品详细信息页中的项目),一次显示一个项目. 对于触摸设备,轻扫某个项将在整个集合中 ...
随机推荐
- 幼儿园的 selenium
from selenium import webdriver *固定开头 b=webdriver.Firefox() *打开火狐浏览器 browser. ...
- centos6 系统安装 system-config-kickstart 工具
kickstart 能实现 linux 系统的自动化安装,需要设置 ks.cfg 文件,而这个 ks.cfg 文件的生成最好使用 system-config-kickstart 工具生成,比较准确,也 ...
- MYSQL 导入Excel数据到数据库中
1,先把excel的数据整理整齐,如每列都要保持同样的格式:就一列一列的数据: 2,导出excel的数据为CSV格式,即把excel的数据另存为xxxx.csv;: 3,用EditPlus工具将xxx ...
- css实现页面元素居中
水平居中 对于已知宽度的块级元素实现水平居中只需要设置 margin-left:auto; margin-right:auto; 对于多个块级元素实现水平居中只需要设置 //1 父类{ text-al ...
- BZOJ 1691: [Usaco2007 Dec]挑剔的美食家 [treap 贪心]
1691: [Usaco2007 Dec]挑剔的美食家 Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 786 Solved: 391[Submit][S ...
- Java程序设计之Constructor
插入段代码,下次回忆吧. 先新建一个Person类,代码如下: public class Person { private String name ; private int age; public ...
- Spring JavaMail发送邮件
JavaMail的介绍 JavaMail,顾名思义,提供给开发者处理电子邮件相关的编程接口.它是Sun发布的用来处理email的API.它可以方便地执行一些常用的邮件传输. 虽然JavaMail是 ...
- 利用Oracle创建表空间和用户
本文仅用于学习交流,商业用途请支持正版!转载请注明:http://www.cnblogs.com/mxbs/p/6217152.html 第一步,创建表空间 以SYS/sys账户和SYSDBA身份登录 ...
- idea 插件的使用 进阶篇
CSDN 2016博客之星评选结果公布 [系列直播]零基础学习微信小程序! "我的2016"主题征文活动 博客的神秘功能 idea 插件的使用 进阶篇(个人收集 ...
- C#进阶系列——WebApi 身份认证解决方案:Basic基础认证
前言:最近,讨论到数据库安全的问题,于是就引出了WebApi服务没有加任何验证的问题.也就是说,任何人只要知道了接口的url,都能够模拟http请求去访问我们的服务接口,从而去增删改查数据库,这后果想 ...