Java常用工具类---Date日期工具类、Mail邮件工具类

package com.jarvis.base.util;

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

/**
 *   
 * 
 * @Title: DateHelper.java
 * @Package com.jarvis.base.util
 * @Description:日期工具类
 * @version V1.0  
 */
public class DateHelper {

	/**
	 * 日期格式yyyy-MM-dd
	 */
	public static final String pattern_date = "yyyy-MM-dd";

	/**
	 * 日期时间格式yyyy-MM-dd HH:mm:ss
	 */
	public static final String pattern_time = "yyyy-MM-dd HH:mm:ss";

	/**
	 * 描述:日期格式化
	 * 
	 * @param date
	 *            日期
	 * @return 输出格式为 yyyy-MM-dd 的字串
	 */
	public static String formatDate(Date date) {
		return formatDate(date, pattern_time);
	}

	/**
	 * 描述:日期格式化
	 * 
	 * @param date
	 *            日期
	 * @param pattern
	 *            格式化类型
	 * @return
	 */
	public static String formatDate(Date date, String pattern) {
		SimpleDateFormat dateFormat = new SimpleDateFormat(pattern);
		return dateFormat.format(date);
	}

	/**
	 * 描述:解析日期字串
	 * 
	 * @param dateStr
	 *            日期字串
	 * @return 按 yyyy-MM-dd HH:mm:ss 格式解析
	 */
	public static Date parseString(String dateStr) {
		return parseString(dateStr, "yyyy-MM-dd HH:mm:ss");
	}

	/**
	 * 描述:解析日期字串
	 * 
	 * @param dateStr
	 *            日期字串
	 * @param pattern
	 *            字串日期格式
	 * @return 对应日期类型数据
	 */
	public static Date parseString(String dateStr, String pattern) {
		SimpleDateFormat dateFormat = new SimpleDateFormat(pattern);
		try {
			if (!StringHelper.isEmpty(dateStr)) {
				return dateFormat.parse(dateStr);
			}
		} catch (ParseException ex) {
			ex.printStackTrace();
			System.err.println(dateStr + "转换成日期失败,可能是不符合格式:" + pattern);
		}
		return null;
	}

	/**
	 * 描述:获取指定日期的中文星期数
	 * 
	 * @param date
	 *            指定日期
	 * @return 星期数,如:星期一
	 */
	public static String getWeekStr(Date date) {
		Calendar calendar = Calendar.getInstance();
		calendar.setTime(date);
		int week = calendar.get(7);
		--week;
		String weekStr = "";
		switch (week) {
		case 0:
			weekStr = "星期日";
			break;
		case 1:
			weekStr = "星期一";
			break;
		case 2:
			weekStr = "星期二";
			break;
		case 3:
			weekStr = "星期三";
			break;
		case 4:
			weekStr = "星期四";
			break;
		case 5:
			weekStr = "星期五";
			break;
		case 6:
			weekStr = "星期六";
		}
		return weekStr;
	}

	/**
	 * 描述:间隔时间
	 * 
	 * @param date1
	 * @param date2
	 * @return 毫秒数
	 */
	public static long getDateMiliDispersion(Date date1, Date date2) {
		if ((date1 == null) || (date2 == null)) {
			return 0L;
		}

		long time1 = date1.getTime();
		long time2 = date2.getTime();

		return time1 - time2;
	}

	/**
	 * 描述:间隔天数
	 * 
	 * @param date1
	 * @param date2
	 * @return 天数
	 */
	public static int getDateDiff(Date date1, Date date2) {
		if ((date1 == null) || (date2 == null)) {
			return 0;
		}
		long time1 = date1.getTime();
		long time2 = date2.getTime();

		long diff = time1 - time2;

		Long longValue = new Long(diff / 86400000L);
		return longValue.intValue();
	}

	/**
	 * 描述:获取指定日期之前多少天的日期
	 * 
	 * @param date
	 *            指定日期
	 * @param day
	 *            天数
	 * @return 日期
	 */
	public static Date getDataDiff(Date date, int day) {
		if (date == null) {
			return null;
		}
		long time = date.getTime();
		time -= 86400000L * day;
		return new Date(time);
	}

	/**
	 * 描述:获取当前周
	 * 
	 * @return
	 */
	public static int getCurrentWeek() {
		Calendar calendar = Calendar.getInstance();
		int week = calendar.get(7);
		--week;
		if (week == 0) {
			week = 7;
		}
		return week;
	}

	/**
	 * 描述:获取中文当前周
	 * 
	 * @return
	 */
	public static String getCurrentWeekStr() {
		return getWeekStr(new Date());
	}

	/**
	 * 描述:获取本年
	 * 
	 * @return
	 */
	public static int getCurrentYear() {
		Calendar calendar = Calendar.getInstance();
		return calendar.get(1);
	}

	/**
	 * 描述:获取本月
	 * 
	 * @return
	 */
	public static int getCurrentMonth() {
		Calendar calendar = Calendar.getInstance();
		return calendar.get(2) + 1;
	}

	/**
	 * 描述:获取本月的当前日期数
	 * 
	 * @return
	 */
	public static int getCurrentDay() {
		Calendar calendar = Calendar.getInstance();
		return calendar.get(5);
	}

	/**
	 * 描述:当前时间与指定时间的差
	 * 
	 * @param str
	 *            秒数
	 * @return 时间差,单位:秒
	 */
	public static int getUnixTime(String str) {
		if ((str == null) || ("".equals(str))) {
			return 0;
		}
		try {
			long utime = Long.parseLong(str) * 1000L;
			Date date1 = new Date(utime);

			Date date = new Date();

			long nowtime = (date.getTime() - date1.getTime()) / 1000L;
			return (int) nowtime;
		} catch (Exception e) {
			e.printStackTrace();
			System.err.println("获取时差失败");
		}
		return 0;
	}

	/**
	 * 描述:去除日期字串中原“-”和“:”
	 * 
	 * @param dateTime日期字串
	 * @return
	 */
	public static String formatString(String dateTime) {
		if ((dateTime != null) && (dateTime.length() >= 8)) {
			String formatDateTime = dateTime.replaceAll("-", "");
			formatDateTime = formatDateTime.replaceAll(":", "");
			String date = formatDateTime.substring(0, 8);
			return date;
		}

		return "";
	}

	/**
	 * 描述:当前时间与指定时间的差
	 * 
	 * @param str
	 *            yyyy-MM-dd HH:mm:ss 格式的日期
	 * @return 时间差,单位:秒
	 */
	public static int getTimesper(String str) {
		if ((str == null) || ("".equals(str))) {
			return 0;
		}
		try {
			Date date1 = new Date(Long.parseLong(str));
			Date date = new Date();
			long nowtime = (date.getTime() - date1.getTime()) / 1000L;
			return (int) nowtime;
		} catch (Exception e) {
			e.printStackTrace();
			System.err.println("日期转换出错");
		}
		return 0;
	}

	/**
	 * 描述:获取16位日期时间,yyyyMMddHHmmss
	 * 
	 * @param dateTime
	 *            字串日期
	 * @return
	 */
	public static String formatDateTime(String dateTime) {
		if ((dateTime != null) && (dateTime.length() >= 8)) {
			String formatDateTime = dateTime.replaceAll("-", "");
			formatDateTime = formatDateTime.replaceAll(":", "");
			String date = formatDateTime.substring(0, 8);
			String time = formatDateTime.substring(8).trim();
			for (int i = time.length(); i < 6; ++i) {
				time = time + "0";
			}
			return date + time;
		}

		return "";
	}

	/**
	 * 描述:获取16位日期时间,yyyyMMddHHmmss
	 * 
	 * @param date
	 *            日期
	 * @return
	 */
	public static String formatDateTime(Date date) {
		String dateTime = formatDate(date);
		return formatDateTime(dateTime);
	}
}





package com.jarvis.base.util;

import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;

import org.apache.commons.mail.EmailAttachment;
import org.apache.commons.mail.EmailException;
import org.apache.commons.mail.HtmlEmail;
import org.apache.commons.mail.MultiPartEmail;
import org.apache.commons.mail.SimpleEmail;

/**   
* @Title: MailHelper.java 
* @Package com.jarvis.base.util 
* @Description:mail工具类
* @version V1.0   
*/ 
public class MailHelper
{
    /**
     * 简单的发邮件方式    邮件内容只有标题和邮件内容  支持单个个用户发送
     *
     * @param host             邮件服务器地址
     * @param username         连接邮件服务器的用户名称
     * @param password         连接邮件服务器的用户密码
     * @param subject          邮件的主题
     * @param contents         邮件的内容
     * @param toEmailAddress   收件人的邮件地址
     * @param fromEmailAddress 发件人的邮件地址
     * @throws EmailException
     */
    public static void sendSimpleEmail(String host, String username, String password, String subject, String contents,
                                       String toEmailAddress, String fromEmailAddress) throws EmailException
    {
        SimpleEmail email = new SimpleEmail();
        email.setHostName(host);
        email.setAuthentication(username, password);
        email.addTo(toEmailAddress);
        email.setFrom(fromEmailAddress, fromEmailAddress);
        email.setSubject(subject);
        email.setContent((Object)contents, "text/plain;charset=GBK");
        email.send();
    }

    /**
     * 简单的发邮件方式    邮件内容只有标题和邮件内容  支持多个用户批量发送
     *
     * @param host             邮件服务器地址
     * @param username         连接邮件服务器的用户名称
     * @param password         连接邮件服务器的用户密码
     * @param subject          邮件的主题
     * @param contents         邮件的内容
     * @param toEmailAddress   收件人的邮件地址
     * @param fromEmailAddress 发件人的邮件地址
     * @throws EmailException
     */
    public static void sendSimpleEmail(String host, String username, String password, String subject, String contents, String [] toEmailAddress, String fromEmailAddress) throws EmailException
    {
        SimpleEmail email = new SimpleEmail();
        email.setHostName(host);
        email.setAuthentication(username, password);
        //发送给多个人
        for (int i = 0; i < toEmailAddress.length; i++)
        {
            email.addTo(toEmailAddress[i], toEmailAddress[i]);
        }
        email.setFrom(fromEmailAddress, fromEmailAddress);
        email.setSubject(subject);
        email.setContent((Object)contents, "text/plain;charset=GBK");
        email.send();
    }

    /**
     * 发送带附件的邮件方式  邮件内容有标题和邮件内容和附件,附件可以是本地机器上的文本,也可以是web上的一个URL 文件,
     * 当为web上的一个URL文件时,此方法可以将WEB中的URL文件先下载到本地,再发送给收入用户
     *
     * @param host             邮件服务器地址
     * @param username         连接邮件服务器的用户名称
     * @param password         连接邮件服务器的用户密码
     * @param subject          邮件的主题
     * @param contents         邮件的内容
     * @param toEmailAddress   收件人的邮件地址
     * @param fromEmailAddress 发件人的邮件地址
     * @param multiPaths       附件文件数组
     * @throws EmailException
     */

    public static void sendMultiPartEmail(String host, String username, String password, String subject,
                                          String contents, String toEmailAddress, String fromEmailAddress,
                                          String []multiPaths) throws MalformedURLException, EmailException
    {
        List<EmailAttachment> attachmentList = new ArrayList<EmailAttachment>();
        if (multiPaths != null)
        {
            for (int i = 0; i < multiPaths.length; i++)
            {
                EmailAttachment attachment = new EmailAttachment();
                if (multiPaths[i].indexOf("http") == -1)   //判断当前这个文件路径是否在本地  如果是:setPath  否则  setURL;
                {
                    attachment.setPath(multiPaths[i]);
                }
                else
                {
                    attachment.setURL(new URL(multiPaths[i]));
                }
                attachment.setDisposition(EmailAttachment.ATTACHMENT);
                attachment.setDescription("");
                attachmentList.add(attachment);
            }
        }

        //发送邮件信息
        MultiPartEmail email = new MultiPartEmail();
        email.setHostName(host);
        email.setAuthentication(username, password);
        email.addTo(toEmailAddress);
        email.setFrom(fromEmailAddress, fromEmailAddress);
        email.setSubject(subject);
        email.setMsg(contents);   //注意这个不要使用setContent这个方法  setMsg不会出现乱码
        for (int i = 0; i < attachmentList.size(); i++)   //添加多个附件
        {
            email.attach((EmailAttachment) attachmentList.get(i));
        }
        email.send();
    }

    /**
     * 发送带附件的邮件方式  邮件内容有标题和邮件内容和附件,附件可以是本地机器上的文本,也可以是web上的一个URL 文件,
     * 当为web上的一个URL文件时,此方法可以将WEB中的URL文件先下载到本地,再发送给收入用户
     *
     * @param host             邮件服务器地址
     * @param username         连接邮件服务器的用户名称
     * @param password         连接邮件服务器的用户密码
     * @param subject          邮件的主题
     * @param contents         邮件的内容
     * @param toEmailAddress   收件人的邮件地址数组
     * @param fromEmailAddress 发件人的邮件地址
     * @param multiPaths       附件文件数组
     * @throws EmailException
     */

    public static void sendMultiPartEmail(String host, String username, String password, String subject,
                                          String contents, String[] toEmailAddress, String fromEmailAddress,
                                          String []multiPaths) throws MalformedURLException, EmailException
    {
        List<EmailAttachment> attachmentList = new ArrayList<EmailAttachment>();
        if (multiPaths != null)
        {
            for (int i = 0; i < multiPaths.length; i++)
            {
                EmailAttachment attachment = new EmailAttachment();
                if (multiPaths[i].indexOf("http") == -1)   //判断当前这个文件路径是否在本地  如果是:setPath  否则  setURL;
                {
                    attachment.setPath(multiPaths[i]);
                }
                else
                {
                    attachment.setURL(new URL(multiPaths[i]));
                }
                attachment.setDisposition(EmailAttachment.ATTACHMENT);
                attachment.setDescription("");
                attachmentList.add(attachment);
            }
        }

        //发送邮件信息
        MultiPartEmail email = new MultiPartEmail();
        email.setHostName(host);
        email.setAuthentication(username, password);
        //发送给多个人
        for (int i = 0; i < toEmailAddress.length; i++)
        {
            email.addTo(toEmailAddress[i], toEmailAddress[i]);
        }
        email.setFrom(fromEmailAddress, fromEmailAddress);
        email.setSubject(subject);
        email.setMsg(contents);   //注意这个不要使用setContent这个方法  setMsg不会出现乱码
        for (int i = 0; i < attachmentList.size(); i++)   //添加多个附件
        {
            email.attach((EmailAttachment) attachmentList.get(i));
        }
        email.send();
    }


    /**
     * 发送Html格式的邮件
     *
     * @param host             邮件服务器地址
     * @param username         连接邮件服务器的用户名称
     * @param password         连接邮件服务器的用户密码
     * @param subject          邮件的主题
     * @param contents         邮件的内容
     * @param toEmailAddress   收件人的邮件地址
     * @param fromEmailAddress 发件人邮件地址
     * @throws EmailException
     */
    public static void sendHtmlEmail(String host, String username, String password, String subject, String contents, String toEmailAddress, String fromEmailAddress) throws EmailException
    {
        HtmlEmail email = new HtmlEmail();
        //email.setDebug(true);
        email.setHostName(host);
        email.setAuthentication(username, password);
        email.addTo(toEmailAddress);
        email.setFrom(fromEmailAddress, fromEmailAddress);
        email.setSubject(subject);
        email.setHtmlMsg(CharHelper.GBKto8859(contents));
        email.send();
    }

    /**
     * 发送Html格式的邮件
     *
     * @param host             邮件服务器地址
     * @param username         连接邮件服务器的用户名称
     * @param password         连接邮件服务器的用户密码
     * @param subject          邮件的主题
     * @param contents         邮件的内容
     * @param toEmailAddress   收件人的邮件地址数组
     * @param fromEmailAddress 发件人邮件地址
     * @throws EmailException
     */
    public static void sendHtmlEmail(String host, String username, String password, String subject, String contents, String[] toEmailAddress, String fromEmailAddress) throws EmailException
    {
        HtmlEmail email = new HtmlEmail();
        email.setHostName(host);
        email.setAuthentication(username, password);
        //发送给多个人
        for (int i = 0; i < toEmailAddress.length; i++)
        {
            email.addTo(toEmailAddress[i], toEmailAddress[i]);
        }
        email.setFrom(fromEmailAddress, fromEmailAddress);
        email.setSubject(subject);
        email.setHtmlMsg(CharHelper.GBKto8859(contents));
        email.send();
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值