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.翻转视图 使用翻转视图浏览集合中的图像或其他项目(例如相册中的照片或产品详细信息页中的项目),一次显示一个项目. 对于触摸设备,轻扫某个项将在整个集合中 ...
随机推荐
- JAVA编程思想(第四版)学习笔记----4.8 switch(知识点已更新)
switch语句和if-else语句不同,switch语句可以有多个可能的执行路径.在第四版java编程思想介绍switch语句的语法格式时写到: switch (integral-selector) ...
- java中使用javamail发送邮件
1. 电子邮件协议 电子邮件的在网络中传输和网页一样需要遵从特定的协议,常用的电子邮件协议包括 SMTP,POP3,IMAP. 其中邮件的创建和发送只需要用到 SMTP协议,所有本文也只会涉及到SMT ...
- Oracle数据库,数据的增、删、改、查
oracle数据库中,数据的增.删.改.查,通过SQL语句实现 SQL:结构化查询语言: 特点:不区分大小写:字符串用单引号引起来:语句结束用分号表示结束: 行注释,在语句的最前面加"--& ...
- python列表模拟堆栈和队列
对列特点:先进先出.后进后出 用列表insert.pop模拟进队出队: >>> l = [] >>> l.insert(0,'p1') >>> l ...
- Python测试函数的方法之一
Python测试函数的方法之一 首先介绍简单的try......except尝试运行的放例如下面的图和代码来简单介绍下: 注释:提醒以下代码环境为2.7.x 请3.x以上的同学们老规矩print(把打 ...
- Bootstrap 快速人门案例——前端最火的插件
今天,我给小白们分享一下比较流行的Bootstrap框架,它在工作中得到许多公司的青睐,因此对于升职和加薪很重要.同时,我们可以快速完成开发任务,减少发开周期,有不对的地方望大家指正. 如果你想走的更 ...
- STM32C8T6 JTAG使用到PB3|PB4|PA13|PA14|PB15端口做普通IO时,需禁止JTAG!
GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIO ...
- Juniper SSG5 PPTP VPN 619错误解决
公司分部的客户端需要使用PPTP VPN连接总部,将网关更换为Juniper SSG5后,客户端出现了每几个小时自动断开的现象,错误619. 解决:Security —— ALG —— 开启PPTP协 ...
- Java Generics and Collections-2.4-2.5
2.4 The Get and Put Principle Get and Put Principle: 用于取对象的泛型集合,声明为 <? extends T> 用于存对象的泛型集合,声 ...
- java中null 关键字
Java中,null是一个关键字,用来标识一个不确定的对象.null常见意义:一.null是代表不确定的对象 Java中,null是一个关键字,用来标识一个不确定的对象.因此可以将null赋给引用类 ...