java工具类开发之日期工具类DateUtils和读取属性配置文件工具类PropertiesUtils

java工具类开发之日期工具类和读取属性配置文件工具类

      很多时候,我们采用java来开发相关应用软件的时候,需要自己开发一些工具类并把它封装在utils工具类中,然后在需要使用的地方直接“类.方法”直接调用!本文将介绍两个比较常用的工具类,分别是日期工具类DateUtils和读取属性配置文件工具类PropertiesUtils。

      下面介绍第一个工具类DateUtils,主要有以下功效:

(1)字符串转日期方法:可以转换多种格式的字符串日期

(2)日期转字符串方法

(3)获取当前月的第一天方法: 采用Calendar类实现

(4)获得系统当前的时间方法: 可用于命名一些文件,如上传的图片

     好了,废话不多说,上码了:

package com.steadyjack.utils;

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 钟林森
 *
 */
public class DateUtils {
	//多种日期格式对应的正则表达式
	private static String[] dateTimeReg = {
		"\\s*\\d{1,4}-\\d{1,2}-\\d{1,2}\\s+\\d{1,2}:\\d{1,2}:\\d{1,2}\\s*", 
		"\\s*\\d{1,4}-\\d{1,2}-\\d{1,2}\\s+\\d{1,2}:\\d{1,2}\\s*",
		"\\s*\\d{1,4}-\\d{1,2}-\\d{1,2}\\s+\\d{1,2}\\s*",
		"\\s*\\d{1,4}-\\d{1,2}-\\d{1,2}\\s*",
		"\\s*\\d{1,4}/\\d{1,2}/\\d{1,2}\\s+\\d{1,2}:\\d{1,2}:\\d{1,2}\\s*", 
		"\\s*\\d{1,4}/\\d{1,2}/\\d{1,2}\\s+\\d{1,2}:\\d{1,2}\\s*",
		"\\s*\\d{1,4}/\\d{1,2}/\\d{1,2}\\s+\\d{1,2}\\s*",
		"\\s*\\d{1,4}/\\d{1,2}/\\d{1,2}\\s*"
	};
	//多种日期格式
	private static DateFormat[] dateFormat = {
			new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"),
			new SimpleDateFormat("yyyy-MM-dd HH:mm"),
			new SimpleDateFormat("yyyy-MM-dd HH"),
			new SimpleDateFormat("yyyy-MM-dd"),
			new SimpleDateFormat("yyyy/MM/dd HH:mm:ss"),
			new SimpleDateFormat("yyyy/MM/dd HH:mm"),
			new SimpleDateFormat("yyyy/MM/dd HH"),
			new SimpleDateFormat("yyyy/MM/dd"),
	};
	
	/**
	 * 获取待匹配的字符串对应的正则表达式的下标 index
	 * @param dateStr
	 * @return
	 */
	public static int getRegIndex(String dateStr){
		Pattern pattern = null;
		int i=0;
		for (; i<dateTimeReg.length; i++) {
			//compile(正则表达式)
			pattern = Pattern.compile(dateTimeReg[i]);
			
			//matcher(预匹配的字符串)
			Matcher mat = pattern.matcher(dateStr);  
			
			//find() 是否匹配成功
			boolean isMatch = mat.find();
			if (isMatch)
				break;
		}
		
		return i;
	}
	
	/**
	 * 字符串转日期类:可以转换多种格式的字符串日期
	 * @param dateStr
	 * @return
	 */
	public static Date strToDate(String dateStr){
		if (dateStr==null || dateStr=="") {
			return null;
		}
		//匹配成功:那么那个i就是我们所需的,目的是为了可以从  dateFormat 取到需要转换为指定的时间格式
		int i=getRegIndex(dateStr.trim());
		
		Date resultDate=null;
		if (i<dateTimeReg.length) {
			try {
				resultDate=dateFormat[i].parse(dateStr);
			} catch (ParseException e) {
				e.printStackTrace();
			}
		}
		return resultDate;
	}
	
	/**
	 * 日期转字符串
	 * @param paramDate
	 * @param dateFormat
	 * @return
	 */
	public static String dateToStr(Date paramDate,String dateFormat){
		if (paramDate==null || dateFormat==null || dateFormat=="") {
			return null;
		}
		SimpleDateFormat sdf=new SimpleDateFormat(dateFormat);
		return sdf.format(paramDate);
	}
	
	/**
	 * 获取当前月的第一天: 采用Calendar类实现
	 * @return
	 */
	public static Date getFirstDayInMonth(){
		Calendar calendar=Calendar.getInstance();
		calendar.set(GregorianCalendar.DAY_OF_MONTH, 1);
		return calendar.getTime();
	}
	
	/**
	 * 获得系统当前的时间: 可用于命名一些文件,如上传的图片
	 * @author 钟林森
	 * @return
	 * @throws Exception
	 */
	public static String getCurrentDateStr()throws Exception{
		Date date=new Date();
		SimpleDateFormat sdf=new SimpleDateFormat("yyyyMMddhhmmss");
		return sdf.format(date);
	}
	
}

     下面是用于测试DateUtils的单元测试类(注意导入 junit)

package com.steadyjack.testUtils;

import java.util.Date;

import org.junit.Test;
import com.steadyjack.utils.DateUtils;

public class DateTest {

	@SuppressWarnings("deprecation")
	@Test
	public void test() {
		String dateStr="2014/10/21 09:02:01";
		Date resultDate=DateUtils.strToDate(dateStr);
		System.out.println("字符串转日期: "+resultDate.toLocaleString());
	}
	
	@Test
	public void test2(){
		Date tempDate=new Date(new Date().getTime());
		System.out.println("日期转字符串: "+DateUtils.dateToStr(tempDate, "yyyy-MM-dd HH:mm:ss"));
	}

	@Test
	public void test3(){
		Date resultDate=DateUtils.getFirstDayInMonth();
		System.out.println("当前月的第一天: "+DateUtils.dateToStr(resultDate, "yyyy-MM-dd"));
	}
	
	@Test
	public void test4() throws Exception{
		System.out.println("系统当前时间: "+DateUtils.getCurrentDateStr());
	}
	
}

     下面介绍 读取属性配置文件类 PropertiesUtils,具有下面的功能:

(1)读取属性配置文件的某个属性的值

      这个工具类在java EE企业级应用中一些监听器对应的执行方法可能需要用到,用来读取像“数据库配置文件”,“系统配置文件”等配置文件中相关属性的值。

     下面是代码:

package com.steadyjack.utils;

import java.util.Properties;

/**
 * 读取属性配置文件工具类
 * @author 钟林森
 *
 */
public class PropertiesUtils {
	
	private static Properties properties=new Properties();
	
	static{
		try {
			//注意属性配置文件所在的路径
			properties.load(PropertiesUtils.class.getClassLoader().getResourceAsStream("./properties/db.properties"));
		} catch (Exception e) {
			System.out.println(e.getMessage());
		}
	}
	
	//读取属性配置文件中的某个属性对应的值
	public static String readProperty(String property){
		return (String) properties.get(property);
	}
		
}

      其中,db.properties配置文件的位置如下截图所示:

   其中,properties是一个包

      下面是db.properties文件的内容:(这个配置文件里面的内容在下一篇博文会用到!!!!!)

sys.path.current.url=202.192.168.1
user=root
password=123456
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/db_spring

      下面是 PropertiesUtils的单元测试类

package com.steadyjack.testUtils;

import org.junit.Test;

import com.steadyjack.utils.PropertiesUtils;

public class PropertiesTest {

	@Test
	public void testReadProperty() {
		
		String url="sys.path.current.url";
		String urlValue=PropertiesUtils.readProperty(url);
		System.out.println("读取属性配置文件中的属性:  "+url+"  对应的值: "+urlValue);
		
	}

}
      好了,本文介绍到这里了,下文再介绍剩下的几个工具类


发布了126 篇原创文章 · 获赞 236 · 访问量 60万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 精致技术 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览