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);
}

时间: 2024-10-17 10:24:09

java 对时间(Date)随笔!的相关文章

Java 日期时间 Date类型,long类型,String类型表现形式的转换 (转)

Java 日期时间 Date类型,long类型,String类型表现形式的转换 1.java.util.Date类型转换成long类型java.util.Date dt = new Date();System.out.println(dt.toString());   //java.util.Date的含义long lSysTime1 = dt.getTime() / 1000;   //得到秒数,Date类型的getTime()返回毫秒数 2.由long类型转换成Date类型SimpleDat

Java 日期时间 Date类型,long类型,String类型表现形式的转换

1.java.util.Date类型转换成long类型java.util.Date dt = new Date();System.out.println(dt.toString());   //java.util.Date的含义long lSysTime1 = dt.getTime() / 1000;   //得到秒数,Date类型的getTime()返回毫秒数 2.由long类型转换成Date类型SimpleDateFormat sdf= new SimpleDateFormat("MM/dd

Java日期时间(Date/Time)

获取当前日期和时间 在Java中容易得到当前的日期和时间.可以使用一个简单的Date对象的toString()方法,如下所示打印当前日期和时间: import java.util.Date; public class DateDemo { public static void main(String args[]) { // Instantiate a Date object Date date = new Date(); // display time and date using toStr

java,时间转时间戳的转换以及各种date格式的转化

package com.henry.test; import java.text.SimpleDateFormat;import java.util.Date;import java.util.HashMap;import java.util.Map; import org.apache.commons.lang.StringUtils; import com.shopin.core.util.HttpClientUtil; public class test { /** * 说明: * @pa

JAVA学习--使用 Date 和 SimpleDateFormat 类表示时间

使用 Date 和 SimpleDateFormat 类表示时间 在程序开发中,经常需要处理日期和时间的相关数据,此时我们可以使用 java.util 包中的 Date 类.这个类最主要的作用就是获取当前时间,我们来看下 Date 类的使用: 使用 Date 类的默认无参构造方法创建出的对象就代表当前时间,我们可以直接输出 Date 对象显示当前的时间,显示的结果如下: 其中, Wed 代表 Wednesday (星期三), Jun 代表 June (六月), 11 代表 11 号, CST 代

【时区】java项目new date()时间和服务器时间(数据库)不一致

造成这种问题的原因可能是:你的操作系统时区跟你JVM的时区不一致. 你的操作系统应该是中国的时区吧,而JVM的时区不一定是中国时区,你在应用服务器的Java虚拟机添加如下配置:  -Dfile.encoding=UTF8     -Duser.timezone=GMT+08 在一个精简的Linux安装上jre,发现所有的java程序获取的时间都不是系统时间.后来发现原来是时区不对.java程序获取的时间都是GMT时间,而系统是北京时间,应该是GMT+8,刚好相差8小时.网上搜了好多资料,只有两种

转——JAVA中calendar,date,string 的相互转换和详细用法

package cn.outofmemory.codes.Date; import java.util.Calendar; import java.util.Date; public class CalendarDemo { public static void main(String[] args) { Calendar calendar=Calendar.getInstance(); calendar.setTime(new Date()); System.out.println("现在时间

时间Date的各种获取方式

常用的时间获取方式 public class DateUtils { /** * 获取时间戳 * 输出结果:1438692801766 */ @Test public void getTimeStamp() { Date date = new Date(); long times = date.getTime(); System.out.println(times); //第二种方法: new Date().getTime(); } /** * 获取格式化的时间 * 输出格式:2015-08-0

mysql和java的时间对应关系

引用:http://blog.csdn.net/xinghuo0007/article/details/51500923 MySQL(版本:5.1.50)的时间日期类型如下: datetime 8bytes xxxx-xx-xx xx:xx:xx 1000-01-01 00:00:00到9999-12-31 23:59:59 timestamp 4bytes xxxx-xx-xx xx:xx:xx 1970-01-01 00:00:01到2038 date 3bytes xxxx-xx-xx 1

3.Java基础之Date对象

毕向东老师Java基础学习笔记——Date对象 今天学习Java中的Date对象后,感觉这个对象对我们主要有以下几点用处. 1.获取时间和日期并按照自己定义的格式显示. 2.网站设计时显示时间.  知识点如下: java.util 类 Date 表示特定的瞬间,精确到毫秒. 在 JDK 1.1 之前,类 Date 有两个其他的函数.它允许把日期解释为年.月.日.小时.分钟和秒值.它也允许格式化和解析日期字符串.不过,这些函数的 API 不易于实现国际化.从 JDK 1.1 开始,应该使用 Cal