java 对时间(Date)随笔!
/**
* 获取系统当前时间
* @return 系统当前时间
*/
public static Date now() {
return new Date();
}
/**
* 根据指定的日期,获取其相对天数days之前的日期
* eg: data=2013-09-09
* days = 3
* 返回=2013-09-06
* @param date 指定的日期
* @param days 相对天数
* @return 日期
*/
public static Date getDateBefore(Date date, int days) {
if (date == null)
date = now();
Calendar now = Calendar.getInstance();
now.setTime(date);
now.set(Calendar.DATE, now.get(Calendar.DATE) - days);
return now.getTime();
}
/**
* 根据指定的日期,获取其相对月数months之前的日期
* eg: data=2013-09-09
* month = 1
* 返回=2013-08-10
* @param date 指定的日期
* @param months 相对月数
* @return 日期
*/
public static Date getDateBeforeMonth(Date date, int months) {
if (date == null)
date = now();
Calendar now = Calendar.getInstance();
now.setTime(date);
now.set(Calendar.MONTH, now.get(Calendar.MONTH) - months);
return now.getTime();
}
/**
* 根据指定的日期,获取其相对月数months之后的日期
* eg: data=2013-09-09
* month = 1
* 返回=2013-10-10
* @param date 指定的日期
* @param months 相对月数
* @return 日期
*/
public static Date getDateAfterMonth(Date date, int months) {
if (date == null)
date = now();
Calendar now = Calendar.getInstance();
now.setTime(date);
now.set(Calendar.MONTH, now.get(Calendar.MONTH) + months);
return now.getTime();
}
/**
* 根据指定的日期,获取其相对天数days之后的日期
* eg: data=2013-09-09
* days = 3
* 返回=2013-09-12
* @param date 指定的日期
* @param days 相对天数
* @return 日期
*/
public static Date getDateAfter(Date date, int days) {
if (date == null)
date = now();
Calendar now = Calendar.getInstance();
now.setTime(date);
now.set(Calendar.DATE, now.get(Calendar.DATE) + days);
return now.getTime();
}
/**
* 根据指定的日期,获取其相对年数years之后的日期
* eg: data=2013-09-09
* month = 1
* 返回=2014-09-08
* @param date 指定的日期
* @param year 相对年数
* @return 日期
*/
public static Date getDateAfterYear(Date date, int year) {
if (date == null)
date = now();
Calendar now = Calendar.getInstance();
now.setTime(date);
now.set(Calendar.YEAR, now.get(Calendar.YEAR) + year);
return now.getTime();
}
public static String getDate(Date date, String format) {
if (date == null)
date = now();
return new SimpleDateFormat(format).format(date);
}
public static String getCurrentDate(String format) {
return getDate(new Date(), format);
}
public static String getCurrentDate() {
return getCurrentDate("yyyy-MM-dd");
}
/**
* 自定义格式化时间
*
* @param date 时间
* @param formatStr 格式化字符串,默认 MM/dd/yyyy
* @return 格式化的时间字符串
*/
public static String formartDate(Date date, String formatStr) {
if (date == null)
date = now();
if (StringUtil.isEmpty(formatStr)) {
formatStr = "MM/dd/yyyy";
}
SimpleDateFormat sdf = new SimpleDateFormat(formatStr);
return sdf.format(date);
}
/**
* 将带时间格式字符转换成时间类型
* @param dateStr 带时间格式的字符串
* @param pattern 格式化字符串
* @return 转换后时间类型数据
*/
public static Date formDate(String dateStr,String pattern){
SimpleDateFormat sdf = new SimpleDateFormat(pattern);
Date date = null ;
try {
date = sdf.parse(dateStr);
} catch (ParseException e) {
e.printStackTrace();
}
return date;
}
/**
* 获取当天开始时间
*
* @return
*/
public static Date getStartTime() {
Calendar todayStart = Calendar.getInstance();
todayStart.set(Calendar.HOUR, 0);
todayStart.set(Calendar.MINUTE, 0);
todayStart.set(Calendar.SECOND, 0);
todayStart.set(Calendar.MILLISECOND, 0);
return todayStart.getTime();
}
/**
* 获取当天结束时间
*
* @return
*/
public static Date getEndTime() {
Calendar todayEnd = Calendar.getInstance();
todayEnd.set(Calendar.YEAR, 4028);
todayEnd.set(Calendar.HOUR_OF_DAY, 23);
todayEnd.set(Calendar.MINUTE, 59);
todayEnd.set(Calendar.SECOND, 59);
todayEnd.set(Calendar.MILLISECOND, 999);
return todayEnd.getTime();
}
/**
* 比较两个时间差
* @param start 开始时间
* @param end 结束时间
* @return 两个时间差
* @throws ParseException
*/
public static long timeCompare(Date start,Date end) {
Calendar aCalendar = Calendar.getInstance();
aCalendar.setTime(start);
int day1 = aCalendar.get(Calendar.DAY_OF_YEAR);
aCalendar.setTime(end);
int day2 = aCalendar.get(Calendar.DAY_OF_YEAR);
return day2 - day1 ;
}
/**
* 比较两个时间大小
* @param start
* @param end
* @return end - start > 0 true ,否则 false
*/
public static boolean compare(Date start,Date end) {
Calendar aCalendar = Calendar.getInstance();
aCalendar.setTime(start);
int day1 = aCalendar.get(Calendar.DAY_OF_YEAR);
aCalendar.setTime(end);
int day2 = aCalendar.get(Calendar.DAY_OF_YEAR);
return day2 - day1 >= 0 ? true:false ;
}
public static int getYear(){
Calendar a=Calendar.getInstance();
return a.get(Calendar.YEAR);
}
public static int getMonth(){
Calendar a=Calendar.getInstance();
return a.get(Calendar.MONTH)+1;
}
public static int getDate(){
Calendar a=Calendar.getInstance();
return a.get(Calendar.DATE);
}
/**
* 获取当年的第一天
* @param year
* @return
*/
public static Date getYearFirst(){
Calendar ca=Calendar.getInstance();
int Year = ca.get(Calendar.YEAR);
ca.clear();
ca.set(Calendar.YEAR, Year);
Date YearFirst = ca.getTime();
return YearFirst;
}
/**
* 获取当年的最后一天
* @param year
* @return
*/
public static Date getYearLast(){
Calendar ca=Calendar.getInstance();
int Year = ca.get(Calendar.YEAR);
ca.clear();
ca.set(Calendar.YEAR, Year);
ca.roll(Calendar.DAY_OF_YEAR, -1);
Date yearLast = ca.getTime();
return yearLast;
}
public static void main(String[] args) {
String str1 = "2014-02-20";
String str2 = "2014-12-20";
List<String> listB = new ArrayList<String>();
List<String> listE = new ArrayList<String>();
listB.add("2014-01-01");
listE.add("2014-12-30");
System.out.println(insertValidate(str1, str2, listB, listE));
}
/**
* 判断时间交叉
* @param beginDate
* @param endDate
* @param beginDateList
* @param endDateList
* @return false 交叉,true,不交叉.
*/
public static boolean insertValidate(String beginDate,String endDate,List<String> beginDateList,List<String> endDateList){
Integer begin = trimChar(beginDate);
Integer end = trimChar(endDate);
List<Integer> beginList = new ArrayList<Integer>();
List<Integer> endList = new ArrayList<Integer>();
for(int i = 0 ; i < beginDateList.size();i++){
beginList.add(trimChar(beginDateList.get(i)));
endList.add(trimChar(endDateList.get(i)));//一个开始时间对应一个结束时间
}
for(int i = 0 ; i < endList.size() ; i ++){
if(begin < endList.get(i) && end > beginList.get(i)){
return false; //存在重叠
}
}
return true;
}
public static Integer trimChar(String str){
String year = str.substring(0,4 );
String yue = str.substring(5,7 );
String ri = str.substring(8,10);
String newString = year+yue+ri;
System.out.println(newString);
return Integer.parseInt(newString);
}
java 对时间(Date)随笔!的更多相关文章
- Java 日期时间 Date类型,long类型,String类型表现形式的转换
Java 日期时间 Date类型,long类型,String类型表现形式的转换 1.java.util.Date类型转换成long类型 java.util.Date dt = new Date(); ...
- Java 日期时间 Date类型,long类型,String类型表现形式的转换 (转)
Java 日期时间 Date类型,long类型,String类型表现形式的转换 1.java.util.Date类型转换成long类型java.util.Date dt = new Date();Sy ...
- 【java】JDK1.8时间日期库 新特性 所有java中时间Date的使用
除了lambda表达式,stream以及几个小的改进之外,Java 8还引入了一套全新的时间日期API,在本篇教程中我们将通过几个简单的任务示例来学习如何使用java 8的这套API.Java对日期, ...
- JAVA基础——时间Date类型转换
在java中有六大时间类,分别是: 1.java.util包下的Date类, 2.java.sql包下的Date类, 3.java.text包下的DateFormat类,(抽象类) 4.java.te ...
- Java日期时间(Date/Time)
获取当前日期和时间 在Java中容易得到当前的日期和时间.可以使用一个简单的Date对象的toString()方法,如下所示打印当前日期和时间: import java.util.Date; publ ...
- java日期时间Date类
java.util包提供了Date类来封装当前的日期和时间. Date类提供两个构造函数来实例化Date对象. 第一个构造函数使用当前日期和时间来初始化对象. Date( ) 第二个构造函数接收一个参 ...
- Java学习--使用 Date 和 SimpleDateFormat 类表示时间
使用 Date 和 SimpleDateFormat 类表示时间 在程序开发中,经常需要处理日期和时间的相关数据,此时我们可以使用 java.util 包中的 Date 类.这个类最主要的作用就是获取 ...
- JAVA中使用Date和SimpleDateFromat类表示时间
转自:https://www.imooc.com/code/2335 仅做个人学习保存之用,侵删! 在程序开发中,经常需要处理日期和时间的相关数据,此时我们可以使用 java.util 包中的 Dat ...
- 3.Java基础之Date对象
毕向东老师Java基础学习笔记——Date对象 今天学习Java中的Date对象后,感觉这个对象对我们主要有以下几点用处. 1.获取时间和日期并按照自己定义的格式显示. 2.网站设计时显示时间. 知 ...
- Java实现时间动态显示方法汇总
这篇文章主要介绍了Java实现时间动态显示方法汇总,很实用的功能,需要的朋友可以参考下 本文所述实例可以实现Java在界面上动态的显示时间.具体实现方法汇总如下: 1.方法一 用TimerTask: ...
随机推荐
- 深入浅出数据结构C语言版(4)——表与链表
在我们谈论本文具体内容之前,我们首先要说明一些事情.在现实生活中我们所说的"表"往往是二维的,比如课程表,就有行和列,成绩表也是有行和列.但是在数据结构,或者说我们本文讨论的范围内 ...
- 使用Struts2校验器
今天遇到了这样的问题:我的jsp页面.web.xml.struts.xml.UserAction-validation.xml等内容写的都正确,就是无法使用校验器!在网上找了半天就是不出来,迫不得已我 ...
- WebService从服务端到客户端的用例
1.首先编写Wsdl(基于契约优先的方式),要注意的是命名空间(若是使用include或import)最好使用一致的,代码如下: <?xml version="1.0" en ...
- netsh导入导出IPSec配置策略
首先提一句: ipsec规则中,filter action为允许的比拒绝的优先级要高,其它的没有顺序关系,经测试验证! 参考:http://tech.techweb.com.cn/thread-354 ...
- ORA-01994: GRANT failed: password file missing or disabled
1.错误现象 SQL> grant sysdba to test;grant sysdba to test*ERROR at line 1:ORA-01994: GRANT failed: pa ...
- SQL Server的学习
一.建库和表1.新建数据库语法: CREATE DATABASE SuperMarket//建立一个名为SuperMarket的数据库. 2.打开数据库语法: USE SuperMarket//打开刚 ...
- Zkui安装
是一个允许在zookeeper上进行增删查改操作的图形管理工具,与zkdash类似. 1.拉取代码 #git clone https://github.com/DeemOpen/zkui.git 2. ...
- 【C语言】两种方式实现冒泡排序算法
题目要求 编写一个C语言程序,实现基本的冒泡排序算法. 算法 冒泡排序,用一句话来总结: 一组数中,相邻的两个数进行比较.交换,将最大(小)数交换至尾(首)部,即完成了一次冒泡排序 要想对N个数字进行 ...
- Java实现缓存(LRU,FIFO)
现在软件或者网页的并发量越来越大了,大量请求直接操作数据库会对数据库造成很大的压力,处理大量连接和请求就会需要很长时间,但是实际中百分之80的数据是很少更改的,这样就可以引入缓存来进行读取,减少数据库 ...
- 读书笔记 effective c++ Item 43 了解如何访问模板化基类中的名字
1. 问题的引入——派生类不会发现模板基类中的名字 假设我们需要写一个应用,使用它可以为不同的公司发送消息.消息可以以加密或者明文(未加密)的方式被发送.如果在编译阶段我们有足够的信息来确定哪个信息会 ...