java 日期工具类

原创 2012年03月26日 22:39:14

写了一下针对时间日期的处理工具类,方便以后使用。

上代码

package dada.test.date;

import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Locale;

public class DateUtil {

	public static int DATE_FORMAT = DateFormat.MEDIUM;
	public static Locale DATE_LOCALE = Locale.SIMPLIFIED_CHINESE;
	/**
	 * 得到当前日期.
	 * Creation date: (2012-3-22)
	 * @return java.lang.String
	 */
	public static String getCurrentDatetime(){
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
		return sdf.format(new Date());
	}
	
	/**
	 * 得到当前日期.
	 * Creation date: (2001-7-16 13:56:17)
	 * @return java.lang.String
	 */
	public static String getCurrentDatetime(String pattern){
		SimpleDateFormat sdf = new SimpleDateFormat(pattern);
		return sdf.format(new Date());
	}
	
	/**
	 * Change date format.
	 * From: yyyy-MM-dd   To: yyyyMMdd
	 * @param oldValue String
	 * @return String
	 */
	public static String changeDateFormat(String oldValue) {
		DateFormat df = DateFormat.getDateInstance(DATE_FORMAT, DATE_LOCALE);
		Date date = null;
		try {
			date = df.parse(oldValue);
		} catch (ParseException e) {
			e.printStackTrace();
			return "";
		}
		SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
		return sdf.format(date);
	}
	
	/**
	 * 将日期转换为字符串
	 * 格式为yyyy-MM-dd
	 * @param aDate java.util.Date
	 * @return String
	 */
	public static String formatDate(java.util.Date aDate) {
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
		return sdf.format(aDate);
	}
	
	/**
	 * 将字符串转化为日期
	 * 格式为yyyy-MM-dd
	 * @param aDate java.util.Date
	 * @return String
	 */
	public static Date toDate(String dateString) throws  ParseException{
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
		return sdf.parse(dateString);
	}
	
	/**
	 * 得到当前月.
	 * Creation date: (2001-7-16 13:56:17)
	 * @return java.lang.String
	 */
	public static String getCurrentMonth() {
		SimpleDateFormat df = new SimpleDateFormat("MM");
		return df.format(new Date());
	}
	
	/**
	 * 得到当前季度.
	 * Creation date: (2001-7-16 13:56:17)
	 * @return java.lang.String
	 */
	public static int getCurrentQuarter() {
		Calendar c1 = Calendar.getInstance();
		c1.setTime(new Date());
		int month = c1.get(Calendar.MONTH)+1;
		int quarter = 1;
		if(month<=3){
			quarter = 1;
		}else if(month>3&&month<=6){
			quarter = 2;
		}else if(month>6&&month<=9){
			quarter = 3;
		}else{
			quarter = 4;
		}
		
		return quarter;
	}
	
	
	/**
	 * 得到当前年.
	 * Creation date: (2001-7-16 13:56:17)
	 * @return java.lang.String
	 */
	public static String getCurrentYear() {
		SimpleDateFormat df = new SimpleDateFormat("yyyy");
		return df.format(new Date());
	}
	

	/**
	 * 获取当前月的第一天
	 * @return java.lang.String
	 */
	public static String getFirstDateOfMonth() {
		SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-");
		return df.format(new Date())+"01";
	}
	
	/**
	 * 获取当前月的最后一天
	 * @return java.lang.String
	 */
	public static int getLastDateOfMonth() {
		Calendar c1 = Calendar.getInstance();
		c1.setTime(new Date());
		/*try {
			c1.setTime(toDate("2011-02-12"));
		} catch (ParseException e) {
			e.printStackTrace();
		}*/
		return c1.getActualMaximum(Calendar.DAY_OF_MONTH);
	}
	
	/**
	 * 获取上个月的第一天
	 * @return String
	 */
	public static String getFirstDateOfLastMonth() {
		Calendar calendar = Calendar.getInstance();
//		try {
//			calendar.setTime(toDate("2012-01-12"));
//		} catch (ParseException e) {
//			e.printStackTrace();
//		}
		calendar.setTime(new Date());
		calendar.add(Calendar.MONTH, -1);
		SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-");
		String s = df.format(calendar.getTime());
		s += "01";
		return s;
	}
	
	/**
	 * 获取与当前日期相差若干天的日期
	 * @return java.lang.String
	 * @param dif
	 */
	public static String getDate(int dif) {
		Calendar calendar = Calendar.getInstance();
		calendar.setTime(new Date());
		calendar.add(Calendar.DAY_OF_YEAR, dif);
		return formatDate(calendar.getTime());
	}
	
	/**
	 * 两个日期间相差的天数
	 * * @return int
	 * @param date1 java.lang.String
	 * @param date2 java.lang.String
	 */
	public static long calBetweenDays(String date1, String date2) throws Exception{
		DateFormat df = DateFormat.getDateInstance(DATE_FORMAT,DATE_LOCALE);
		long d1 = df.parse(date1).getTime();
		long d2 = df.parse(date2).getTime();
		return (d1-d2)/1000 / 60 / 60 / 24;
	}
	
	/**
	 * 得到星期几
	 * 注意:星期日是0 ,星期一为1,星期二为2,以此类推 
	 * @param date
	 * @return
	 * create by dada
	 */
	public static int getWeekDay(Date date){
			Calendar c1 = Calendar.getInstance();
			c1.setTime(new Date());
			int week = c1.get(Calendar.DAY_OF_WEEK)-1;
			return week;
	}
	
	/**
	 * 验证日期的合法性
	 * @param date String
	 * @return boolean
	 */
	public static boolean isRightDate(String date) {
		boolean flag = true;
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
		sdf.setLenient(false);
		//System.out.println(sdf.isLenient());
		try {
			Date date2 = sdf.parse(date);
			//System.out.println(formatDate(date2));
		} catch (ParseException e) {
			e.printStackTrace();
			flag = false;
		}
		return flag;
	}
	
	
	public static void main(String[] args) throws Exception {
		System.out.println(getCurrentDatetime());
		System.out.println(getCurrentDatetime("yyyy-MM-dd"));
		System.out.println(getCurrentDatetime("yyyy-MM-dd hh:mm:ss"));
		System.out.println(changeDateFormat("2012-12-21"));
		System.out.println(formatDate(new Date()));
		System.out.println(getCurrentMonth());
		System.out.println(getCurrentYear());
		System.out.println(getFirstDateOfMonth());
		System.out.println(toDate("2012-02-12"));
		System.out.println(getLastDateOfMonth());
		System.out.println("当前季度:"+getCurrentQuarter());
		System.out.println(getFirstDateOfLastMonth());
		System.out.println(getDate(-90));
		System.out.println(calBetweenDays("2012-03-12","2012-02-12"));
		System.out.println(isRightDate("1996-13-3"));
		System.out.println(getWeekDay(toDate("2012-03-26")));
	}
}


java工具类(五)之日期格式字符串与日期实现互转

JAVA字符串转日期或日期转字符串 项目开发过程中需要实现日期格式的字符串与日期进行互转,并进行日期的加减操作。 Demo如下: package weiming.lmapp.utils; im...
  • sunhuaqiang1
  • sunhuaqiang1
  • 2015-08-12 17:02:06
  • 50025

java日期工具类

  • 2017年06月06日 10:13
  • 3KB
  • 下载

代码片段:基于 JDK 8 time包的时间工具类 TimeUtil

摘要: 原创出处:www.bysocket.com 泥瓦匠BYSocket 希望转载,保留摘要,谢谢! “知识的工作者必须成为自己时间的首席执行官。” 前言 这次泥瓦匠带来的是一个好...
  • u010378410
  • u010378410
  • 2016-08-29 10:15:59
  • 1120

常见对象_日期工具类的编写和测试案例

package cn.itcast_04; import java.text.ParseException; import java.util.Date; /* * 工具类测试 */ publ...
  • L1585931143
  • L1585931143
  • 2016-12-08 23:04:21
  • 383

Java线程安全的日期格式化工具类

Java线程安全的日期格式化工具类
  • hkhhkb
  • hkhhkb
  • 2017-12-23 20:48:06
  • 204

JAVA 日期时间的工具类

import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; impor...
  • honghongxuexi
  • honghongxuexi
  • 2016-11-22 23:04:01
  • 1634

java时间操作工具类 DateUtils

  • 2017年11月27日 10:10
  • 10KB
  • 下载

基于 JDK 8 time包的时间工具类

package com.et.oak.time; import static java.time.temporal.ChronoField.DAY_OF_MONTH; import sta...
  • afkbcgz
  • afkbcgz
  • 2017-10-08 15:18:35
  • 485

java处理日期工具类(一)

package util; import java.math.BigDecimal; import java.text.DateFormat; import java.text.ParseExcep...
  • qq_17555933
  • qq_17555933
  • 2016-06-23 17:28:05
  • 4163

java8代码-时间工具类

package com.ven.utils; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; ...
  • u011659172
  • u011659172
  • 2016-11-01 10:33:01
  • 1799
收藏助手
不良信息举报
您举报文章:java 日期工具类
举报原因:
原因补充:

(最多只允许输入30个字)