`
huangshanghua
  • 浏览: 56580 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

java对日期时间的相关操作方法

    博客分类:
  • java
阅读更多
/**
 * 
 */
package com.keda.util;

import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * @author LeeYau
 *
 */
public class FDateFormat {
         public static final SimpleDateFormat NORMAL_FORMAT = new   SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
	public static final SimpleDateFormat NORMAL_FORMATA = new SimpleDateFormat("yyyy-MM-dd");
	public static final SimpleDateFormat YEAR_FORMAT = new SimpleDateFormat("yyyy"); 
	public static final SimpleDateFormat MONTH_FORMAT = new SimpleDateFormat("MM");   
	public static final SimpleDateFormat TIME_FORMAT = new SimpleDateFormat("HH:mm:ss");
	public static final SimpleDateFormat DAY_FORMAT = new SimpleDateFormat("dd");   
	public static final SimpleDateFormat HOUR_FORMAT = new SimpleDateFormat("HH");   
	public static final SimpleDateFormat MINUTE_FORMAT = new SimpleDateFormat("mm");   
	public static final SimpleDateFormat SECOND_FORMAT = new SimpleDateFormat("ss");
         public static final SimpleDateFormat YEAR_MONTH = new SimpleDateFormat("yyMM");   
	public static final SimpleDateFormat CONNECT_FORMAT = new SimpleDateFormat("yyyyMMdd");
	public static final SimpleDateFormat YYMMDD_FORMAT = new SimpleDateFormat("yyyyMMdd");
	public static final SimpleDateFormat MMDD_FORMAT = new SimpleDateFormat("MM-dd");
	public static final SimpleDateFormat MMD_FORMAT = new SimpleDateFormat("MM-d");
	public static final SimpleDateFormat MDD_FORMAT = new SimpleDateFormat("M-dd");
	public static final SimpleDateFormat MD_FORMAT = new SimpleDateFormat("M-d");
	
	
	/**
	 * 返回 yyyyMMdd 格式的日期
	 * @return
	 * @author liguosheng 2011-11-23 上午09:54:26
	 */
	public static String GetConnectDate(){
		String strRet = "";
		try{
			SimpleDateFormat sf = CONNECT_FORMAT;
			strRet = sf.format(new java.util.Date(System.currentTimeMillis()));
		}catch(Exception e){
			e.printStackTrace();
		}
		return strRet;
	}
	
	
	/**
	 * 返回 系统的 yyyyMMdd 格式的日期
	 * add by lee on 2011-12-07 
	 * @return
	 */
	public static String GetSysyyMMddFormatDate(){
		String strRet = "";
		try{
			SimpleDateFormat sf = YYMMDD_FORMAT;
			strRet = sf.format(new java.util.Date(System.currentTimeMillis()));
		}catch(Exception e){
			e.printStackTrace();
		}
		return strRet;
	}
	
	
	/***
	 * 功能:返回 yyyy-MM-dd HH:mm:ss 格式的日期
	 * @return
	 */
	public static String GetLongDate(){
		String strRet="";
		try{
			
			SimpleDateFormat sf=NORMAL_FORMAT;
			strRet=sf.format(new java.util.Date(System.currentTimeMillis()));
		}catch(Exception e){
			e.printStackTrace();
		}
		return strRet;
	}
	
	/***
	 * 功能:返回 yyyy-MM-dd 格式的日期
	 * @return
	 */
	public static String GetShortDate(){
		String strRet="";
		try{
			
			SimpleDateFormat sf=NORMAL_FORMATA;
			strRet=sf.format(new java.util.Date(System.currentTimeMillis()));
		}catch(Exception e){
			e.printStackTrace();
		}
		return strRet;
	}	
	
	
	/**
	 * 返回当前时间
	 * @return
	 */
	public static String getCurTime(){
		String strRet="";
		try{
			SimpleDateFormat sf=TIME_FORMAT;
			strRet=sf.format(new java.util.Date(System.currentTimeMillis()));
		}catch(Exception e){
			e.printStackTrace();
		}
		return strRet;
	}
	
	/**
	 * 返回指定日期时间
	 * @return
	 */
	public static String getPointToDateTime(String dateTime){
		String strRet="";
		try{
			Date date = NORMAL_FORMAT.parse(dateTime);
			Calendar cal = Calendar.getInstance();   
		    cal.setTime(date);   		        
			SimpleDateFormat sf=TIME_FORMAT;
			strRet=sf.format(new java.util.Date(cal.getTimeInMillis()));
		}catch(Exception e){
			e.printStackTrace();
		}
		return strRet;
	}
	
	
	//返回当前日期的格式
	public static String GetDateTime(SimpleDateFormat sformat)
	{
		SimpleDateFormat sf=null;
		String strRet=null;
		if(sformat==null){
			sf=NORMAL_FORMAT;
		}else{
			sf=sformat;
		}
		try{
			strRet=sf.format(new java.util.Date(System.currentTimeMillis()));
		}catch(Exception e){
			System.out.println("getCurrent time error="+e.getMessage());
		}
		return strRet;
	}
	

	/***
	 * 将传入的日期型转换成YYY-MM-DD的字符形
	 * @param date
	 * @return
	 */
	public static String getShortDate(Date date){
		try{
			SimpleDateFormat sf=NORMAL_FORMATA;
			return sf.format(date);
		}catch(Exception e){
			e.printStackTrace();
		}
		return null;
	}
	
	
	/****
	 * 取传入的日期与系统日期相差的天数(传入日期-系统日期)
	 * @param strDate----参数格式:yyyy-MM-dd
	 * @return
	 */
	public static Long getDayDifferWithSystemDate(String strDate){
		try{
		  final  long  DAY   =   3600*1000*24;   
	      DateFormat   f   =   new   SimpleDateFormat("yyyy-MM-dd");   
	      Date   sysTemDate =  f.parse(f.format(new   Date()));   
	      Date   inputDate  =  f.parse(strDate);
	      long lngRetDiffer=(inputDate.getTime()-sysTemDate.getTime())/DAY;
	      return lngRetDiffer;
		}catch(Exception e){
			e.printStackTrace();
		}
		return null;
	}
	
	/****
	 * add by lee on 2011-07-31
	 * 计算传入的日期相差的天数(endDay-beginDate)
	 * @param beginDate----参数格式:yyyy-MM-dd
	 * @param endDay----参数格式:yyyy-MM-dd
	 * @return
	 */	
	public static Long getDayDiffer(String beginDate,String endDay){
		try{
			  final  long  DAY   =   3600*1000*24;   
		      DateFormat   f   =   new   SimpleDateFormat("yyyy-MM-dd");   
		      Date   startDate  =  f.parse(beginDate);
		      Date   endDate    =  f.parse(endDay);
		      long lngRetDiffer=(endDate.getTime()-startDate.getTime())/DAY;
		      return lngRetDiffer;
			}catch(Exception e){
				e.printStackTrace();
			}
			return null;		
	}
	
	
	/****
	 * 将长整型的日期类型,转换成字符型的日期类型
	 * @param lngDate
	 * @param DateFormate
	 * @return
	 */
	public static String getLongToDateString(long lngDate,String DateFormate){
		try{
			Date date=new Date(lngDate);
			DateFormat df=null;
			if(DateFormate!=null){
				df =   new   SimpleDateFormat(DateFormate);
			}else{
				df=NORMAL_FORMAT;
			}
			return df.format(date);
		}catch(Exception e){
			System.out.println("长整型:"+lngDate+"转换成日期类型出错了!");
			e.printStackTrace();
		}
		return null;
	}
	
	/****
	 * 根据输入的日期,及相隔的天数,返回相隔天数的日期
	 * @param strDate-----输入的日期,格式要求yyyy-mm-dd
	 * @param intDate-----相隔的天数,可为正数或负数,为正数时返回的是当前日期的 后intDate天的日期,
	 *                    为负数时返回的是当前日期的前intDate的日期
	 * @return------返回为yyyy-mm-dd格式的日期字符串
	 */
	public static String DateOperate(String strDate,Integer intDate){
		try{
	        String strYear = strDate.substring(0, 4);   
	        String strMoth = strDate.substring(5, 7);   
	        String strDay = strDate.substring(8, 10);	
	        int year = Integer.parseInt(strYear);   
	        int month = Integer.parseInt(strMoth);   
	        int date = Integer.parseInt(strDay);  
	        Calendar calenDar = new GregorianCalendar(year, month - 1, date);   
	        calenDar.add(GregorianCalendar.DATE,intDate);
	        DateFormat formatDate = new SimpleDateFormat("yyyy-MM-dd");
	        String currentTime=formatDate.format(calenDar.getTime());  	        
	        return currentTime;
		}catch(Exception e){
			e.printStackTrace();
		}
		return null;
	}
	
	/**
	 * 日期格式转换,将yyyy/MM/dd日期格式转换成yyyy-MM-dd
	 * @param sourceDate	格式为yyyy/MM/dd
	 * @return 返回为yyyy-mm-dd格式的日期字符串
	 */
	public static String dateFormatConversion(String sourceDate) throws Exception{
	    String targetDate=sourceDate.replace("/", "-");
	    return targetDate;
	} 
	
	/**
	 * 将日期转换成数字类型,用于日期比较
	 * @param sourceDate	格式为yyyy-MM-dd
	 * @return	返回一个整型
	 */
	public static int numberOfDate(String sourceDate){
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); // 格式化日期
		SimpleDateFormat datefd = new SimpleDateFormat("yyyyMMdd"); //日期格式转换---便于日期比较
		try {
			Date d = sdf.parse(sourceDate);
			int newData = Integer.parseInt(datefd.format(d));
			return newData;
		} catch (ParseException e) {
			e.printStackTrace();
		}
        return 0;       
	}
	
	/*****
	 * 判断YYYY-MM-DD格式的字符是否为合法的日期格式
	 * @param sDate
	 * @return
	 */
	public static boolean isValidDate(String sDate) {
	     String datePattern1 = "\\d{4}-\\d{2}-\\d{2}";
	     String datePattern2 = "^((\\d{2}(([02468][048])|([13579][26]))"
	             + "[\\-\\/\\s]?((((0?[13578])|(1[02]))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|"
	             + "(3[01])))|(((0?[469])|(11))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\\-\\/\\s]?"
	             + "((0?[1-9])|([1-2][0-9])))))|(\\d{2}(([02468][1235679])|([13579][01345789]))[\\-\\/\\s]?("
	             + "(((0?[13578])|(1[02]))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\\-\\/\\s]?"
	             + "((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\\-\\/\\s]?((0?[1-9])|(1[0-9])|(2[0-8]))))))";
	     if ((sDate != null)) {
	         Pattern pattern = Pattern.compile(datePattern1);
	         Matcher match = pattern.matcher(sDate);
	         if (match.matches()) {
	             pattern = Pattern.compile(datePattern2);
	             match = pattern.matcher(sDate);
	             return match.matches();
	         }
	         else {
	             return false;
	         }
	     }
	     return false;
	}	
	
	/**
	 * 通过开始日期 和 结束日期 算出他们的时间差  并返回分钟

	 * @param bDate
	 * @param eDate
	 * @return
	 * @author liguosheng 2012-2-15 下午07:53:31
	 */
	public static double getTimeDifference(String beginDate,String endDate) throws Exception{
		SimpleDateFormat sim = NORMAL_FORMAT;
		Date bDate = sim.parse(beginDate);
		Date eDate = sim.parse(endDate);
		return  (eDate.getTime() - bDate.getTime())/1000/60 ;
	}

	/**
	 * 功能:一个日期时间加上分钟数,得到一个新的日期时间

	 * @param beginDateTime
	 * @param addMinutes
	 * @return
	 * @throws ParseException
	 * @author liguosheng 2012-2-16 上午09:01:10
	 */
	public static String getNewDate(String beginDateTime, long addMinutes)throws ParseException {
		SimpleDateFormat sim = NORMAL_FORMAT;
		Date d1 = sim.parse(beginDateTime);
		long time = d1.getTime();
		addMinutes = addMinutes * 60 * 1000;
		time += addMinutes;
		return sim.format(new Date(time));
	}
	
	/**
	 * 返回 yyyy-MM-dd hh:mm:ss 格式的日期
	 * @param date
	 * @return
	 * @author liguosheng 2012-2-16 上午10:22:14
	 */
	public static String getFormatLongDate(String date) throws ParseException{
		SimpleDateFormat dateFormat = NORMAL_FORMAT;
		return dateFormat.format(dateFormat.parse(date));
	} 
	
	
	/**
	 * 返回 yyyy-MM-dd格式的日期
	 * @param date
	 * @return
	 * @author hsh 2012-7-04 16:17:00
	 */
	public static Date getFormatShortDate(String dateTime) throws ParseException{
		return NORMAL_FORMATA.parse(dateTime);
	} 

	
	/**
	 * 将日期参数转换成只有月份日期形式
	 * @param dateTime
	 * @return
	 * @throws ParseException
	 * @author hsh add on 2012-07-09 10:18:00 
	 */
	public static String[] getMD_Format(Date dateTime)throws ParseException{
		String[] mdArr = new String[4];
		try{		
			mdArr[0] = MMDD_FORMAT.format(dateTime);
			mdArr[1] = MMD_FORMAT.format(dateTime);
			mdArr[2] = MDD_FORMAT.format(dateTime);
			mdArr[3] = MD_FORMAT.format(dateTime);		
		}catch(Exception e){
			e.printStackTrace();
		}
		return mdArr;
	}

         /**
	 * 获得指定日期的在一个星期中的处于星期几
	 * @param date 日期时间
	 * @return
	 */
	private String getWeekDayCode(Date date ){		
		Calendar cal = Calendar.getInstance();   
	    cal.setTime(date);   		        
	
	    //日历中每个星期是从星期日开始,因此当取到星期日是1,星期一是2,...星期六是7。
		String weekDay = String.valueOf(cal.get(Calendar.DAY_OF_WEEK));
		return weekDay ;
	}
}
分享到:
评论

相关推荐

    JAVA处理日期时间常用方法

    如果你需要进行更复杂的日期时间操作,例如计算两个日期之间的差值、格式化输出或者解析日期字符串,可以结合使用`Calendar`和`SimpleDateFormat`。对于新的Java 8及以上版本,推荐使用`java.time`包中的API,它们...

    Java8 日期时间操作

    详细介绍了Java8日期时间相关的api,列举了一些常用的方法,包含java.time、java.time.temporal、java.time.format包下的类和接口操作

    java日期时间操作函数代码

    如果这个文件包含了代码示例,你可以打开查看具体实现,进一步学习和理解Java日期时间操作的细节。 总之,理解和熟练掌握Java的日期时间操作对于开发人员来说至关重要,无论是在处理用户输入、记录日志还是进行复杂...

    java操作日期时间工具类

    `Calendar`提供了更灵活的日期时间操作,但API设计复杂,使用起来较为繁琐。 Java 8引入了`java.time`包,这是对日期时间API的重大改进,它包含了一系列新的类,如`LocalDate`、`LocalTime`、`LocalDateTime`、`...

    java处理日期合并

    本文详细介绍了如何使用Java处理日期合并的问题,通过对`TimeoffDateDTO`类的定义和日期合并算法的具体实现,提供了一种有效的方法来解决实际工作中经常遇到的时间段重叠问题。这种方法不仅适用于员工请假时间的管理...

    Java日期常用操作方法工具类

    本文将重点讲解Java日期的常用操作方法,主要基于提供的`JavaDateUtil.java`文件,假设这是一个自定义的日期工具类。 首先,我们来了解`java.util.Date`。这个类在早期的Java版本中被广泛使用,但它的API设计并不...

    操作日期的java包

    为了解决这个问题,社区开发了Joda-Time库,它提供了更为强大且易用的日期时间操作功能。"操作日期的java包"即指的是Joda-Time这个第三方库。 Joda-Time是Java领域广泛使用的日期时间处理库,它的设计目标是替代...

    Java DateUtil.java日期时间操作类源代码.rar

    Java DateUtil.java日期时间操作类源代码,DateUtil类包含了标准的时间和日期格式,以及这些格式在字符串及日期之间转换的方法。比如日期格式转换成时间戳、得到格式化后的系统当前日期、转化日期格式"MM/dd/YY、MM....

    Java 获取日期时间代码

    本文将详细介绍几种常用的Java日期时间获取方法,包括如何获取完整日期时间、仅获取时间部分(时分秒)、获取日期部分以及如何获取时间戳。此外,我们还将探讨如何使用自定义格式来获取日期时间。 #### 二、基本...

    Java日期操作接口

    随着Java的发展,`java.util.Calendar`类成为更推荐的日期时间操作工具。`Calendar`是一个抽象类,提供了日期和时间的计算能力,支持不同的历法。它提供了一系列的实例方法,如`get()`用于获取日期字段(如年、月、...

    java日期操作大全

    这些类提供了丰富的日期时间操作方法,比如获取月份的第一天和最后一天,可以通过`YearMonth`的`atDay(1)`和`plusMonths(1).atDay(1).minusDays(1)`方法实现。 在实际开发中,根据需求选择合适的日期处理方式,如...

    java实现的日期操作类

    在Java社区,有很多开源库如Joda-Time(在Java 8之前非常流行)和ThreeTen-Backport(对Java 6和7提供`java.time`API的后向移植),它们提供了更多的日期和时间操作功能。 在压缩包文件名`com`中,`com`通常是Java...

    java日期类函数方法整理

    根据给定的文件信息,...以上就是对Java日期类函数方法的整理和解释,涵盖了基本的日期操作,包括日期的格式化、解析、转换以及年份和月份的获取等。掌握这些函数和方法,能够帮助开发者更高效地处理日期相关的任务。

    JAVA Swing日期选择控件datepicker

    `datepicker.jar` 文件很可能就是一个包含DatePicker组件的第三方库,它可能包含了预定义的DatePicker类和相关方法,以便开发者在Swing应用中轻松集成日期选择功能。为了使用这个库,你需要将其添加到项目的类路径中...

    JAVA日期操作类详细讲解

    `java.time`包提供了`isBefore()`, `isAfter()`, `isEqual()`等方法,可以轻松地比较两个日期时间对象。 总之,Java中的日期操作涉及到多个类和接口,从基础的`java.util.Date`到现代的`java.time`包,都有各自的...

    java中的时间操作

    ### Java中的时间操作 在Java开发中,时间处理是一项非常重要的功能,特别是在涉及到日期和时间相关的应用程序中。本文将深入探讨Java中关于时间操作的基本概念和技术,并重点介绍四种常见的应用场景:获取当前时间...

    java所有可能的日期操作封装

    Java日期操作是编程中常见的需求,它涉及到对时间的处理、日期格式化、日期比较以及时间戳转换等。Java提供了一系列强大的API来处理日期和时间,主要包括`java.util.Date`、`java.util.Calendar`、`java.text....

    java设置日期格式

    在Java编程中,经常需要处理与日期相关的数据。为了更好地展示和操作这些数据,Java提供了一系列工具类来帮助开发者完成任务。其中,`SimpleDateFormat` 类是 `java.text` 匔包中的一个重要类,用于以特定的格式来...

    JAVA日期操作汇总

    ### JAVA日期操作汇总 本文将对Java中的日期操作进行详细解析,主要涵盖以下几个方面: 1. 计算某个月份的最大天数; 2. `Calendar`与`Date`之间的转换; 3. 日期格式化; 4. 获取指定日期所在的周序号及设置某...

    java8时间相关操作

    Java 8 时间相关操作 Java 8 中的时间相关操作是一个非常重要的知识点,...Java 8 中的日期和时间相关操作提供了非常强大和灵活的日期和时间处理功能,开发者可以根据需要选择合适的方法来处理日期和时间相关的操作。

Global site tag (gtag.js) - Google Analytics