【Java|Android】时间日期工具

10 篇文章 0 订阅
3 篇文章 0 订阅

摘自:https://github.com/cundong/ZhihuPaper


import java.sql.Timestamp;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Locale;

import android.text.TextUtils;

/**
 * 类说明: 日期时间工具类
 * 
 * @author Cundong
 * @date Feb 15, 2012 5:30:51 AM
 * @version 1.0
 */
public class DateUtils {

	/**
	 * 默认日期格式
	 */
	public static final String DEFAULT_FORMAT = "yyyy-MM-dd HH:mm:ss.SSS";

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

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

	public static final String YYYY_MM_DD_HH = "yyyy-MM-dd HH";

	/**
	 * 时间格式:yyyy-MM-dd
	 */
	public static final String YYYY_MM_DD = "yyyy-MM-dd";

	public static final String YYYYMMDD = "yyyyMMdd";

	public static final String MMDD = "MM月dd日";

	/**
	 * 时间格式:HH:mm:ss
	 */
	public static final String HH_MM_SS = "HH:mm:ss";

	public static final String HH_MM = "HH:mm";

	public static final String YYYYmmDDhhMMss = "yyyy/MM/dd HH:mm:ss";

	/**
	 * 获取当前时间
	 * 
	 * @return
	 */
	public static String getCurrentTime() {

		Date date = Calendar.getInstance().getTime();
		SimpleDateFormat sf = new SimpleDateFormat(YYYY_MM_dd_HH_MM_SS, Locale.getDefault());
		return sf.format(date);
	}

	/**
	 * 获取今天的日期,格式为:yyyy/MM/dd
	 * 
	 * @return
	 */
	public static String getCurrentDate(String format) {

		Date date = Calendar.getInstance().getTime();
		SimpleDateFormat sf = new SimpleDateFormat(format, Locale.getDefault());

		return sf.format(date);
	}

	/**
	 * 获取昨天的日期,格式为:yyyy/MM/dd
	 * 
	 * @return
	 */
	public static String getYesterdayDate(String format) {

		Calendar cal = Calendar.getInstance();
		cal.add(Calendar.DATE, -1);
		Date date = cal.getTime();
		SimpleDateFormat sf = new SimpleDateFormat(format, Locale.getDefault());

		return sf.format(date);
	}
	
	/**
	 * 获取前天的日期,格式为:yyyy/MM/dd
	 * 
	 * @return
	 */
	public static String getTheDayBeforeYesterday(String format) {
		Calendar cal = Calendar.getInstance();
		cal.add(Calendar.DATE, -2);
		Date date = cal.getTime();
		SimpleDateFormat sf = new SimpleDateFormat(format, Locale.getDefault());

		return sf.format(date);
	}
	
	/**
	 * 获取今天的日期,格式为:YYYY_MM_DD
	 * 
	 * @return
	 */
	public static String getCurrentDate() {
		return getCurrentDate(YYYY_MM_DD);
	}
	
	public static int getCurrentMonth() {
		Date date = Calendar.getInstance().getTime();
		SimpleDateFormat sf = new SimpleDateFormat("MM", Locale.getDefault());

		return Integer.parseInt(sf.format(date));
	}

	/**
	 * @param pubtime
	 *            样例:2011-06-20T17:23:11Z
	 * @return 样例:05.10 17:11
	 */
	public static String getFormatTime(String pubtime) {
		SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss", Locale.getDefault());

		Date date = null;

		try {
			date = df.parse(pubtime.replace("Z", " "));
		} catch (ParseException e) {
			e.printStackTrace();
		}

		return (null == date) ? null : (new SimpleDateFormat("MM.dd HH:mm", Locale.getDefault())).format(date);
	}

	public static Date getFormatTimeDate(String pubtime, String inputFormat, String outFormat) {

		if (TextUtils.isEmpty(pubtime)) {
			return null;
		}

		SimpleDateFormat df = new SimpleDateFormat(inputFormat, Locale.getDefault());

		Date date = null;
		try {
			pubtime = pubtime.replace("Z", " ");
			pubtime = pubtime.replace("T", " ");

			date = df.parse(pubtime);
		} catch (ParseException e) {
			e.printStackTrace();
		}
		
		return date;
	}
	
	public static String getFormatTime(String pubtime, String inputFormat, String outFormat) {

		Date date = getFormatTimeDate(pubtime, inputFormat, outFormat);

		return (null == date) ? null : (new SimpleDateFormat(outFormat, Locale.getDefault())).format(date);
	}

	/**
	 * @param pubtime
	 *            样例:2011-06-20T17:23:11Z
	 * @param format
	 * @return
	 */
	public static String getFormatTime(String pubtime, String format) {
		SimpleDateFormat df = new SimpleDateFormat(format, Locale.getDefault());

		Date date = null;
		try {
			date = df.parse(pubtime.replace("T", " "));
		} catch (ParseException e) {
			e.printStackTrace();
		}

		return (null == date) ? null : (new SimpleDateFormat(format, Locale.getDefault())).format(date);
	}

	/**
	 * 获取当前日期是星期几
	 * 
	 * @param dt
	 * @return 当前日期是星期几
	 */
	public static String getWeekOfDate(Date dt) {
		String[] weekDays = { "星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六" };
		Calendar cal = Calendar.getInstance();
		cal.setTime(dt);

		int w = cal.get(Calendar.DAY_OF_WEEK) - 1;
		if (w < 0)
			w = 0;

		return weekDays[w];
	}

	/**
	 * 字符串转换时间戳
	 * 
	 * @param str
	 * @return
	 */
	public static long getTimestamp(String str, String fromat) {
		if (TextUtils.isEmpty(str))
			return 0;
		Date date = str2Date(str, fromat);
		return date.getTime();
	}

	/**
	 * 获取两个时间戳之间差值,并且返回小时
	 */
	public static int subTimeStamp2Hour(Timestamp one, Timestamp two) {
		int minute = subTimeStamp2Minute(one, two);
		return minute / 60;
	}

	/**
	 * 获取两个时间戳之间差值,并且返回分钟
	 */
	public static int subTimeStamp2Minute(Timestamp one, Timestamp two) {
		return (int) (two.getTime() - one.getTime()) / (1000 * 60);
	}

	/**
	 * 获取两个时间戳之间差值,并且返回秒
	 */
	public static int subTimeStamp2Second(Timestamp one, Timestamp two) {
		int minute = subTimeStamp2Minute(one, two);
		return minute * 60;
	}

	/**
	 * Date转Timestamp
	 * 
	 * @param pubtime
	 * @return
	 */
	public static Timestamp string2Timestamp(String pubtime, String format) {
		Timestamp timestamp = null;

		SimpleDateFormat df = new SimpleDateFormat(format, Locale.getDefault());

		Date date = null;
		try {
			date = df.parse(pubtime.replace("Z", " "));
		} catch (ParseException e) {
			e.printStackTrace();
		}

		if (null != date) {
			SimpleDateFormat df1 = new SimpleDateFormat(format, Locale.getDefault());
			String time = df1.format(date);
			timestamp = Timestamp.valueOf(time);
		}

		return timestamp;
	}

	/**
	 * 字符串转换成日期 如果转换格式为空,则利用默认格式进行转换操作
	 * 
	 * @param str
	 *            字符串
	 * @param format
	 *            日期格式
	 * @return 日期
	 * @throws java.text.ParseException
	 */
	public static Date str2Date(String str, String format) {
		Date date = null;

		if (!TextUtils.isEmpty(str)) {
			// 如果没有指定字符串转换的格式,则用默认格式进行转换
			if (null == format || "".equals(format)) {
				format = DEFAULT_FORMAT;
			}

			SimpleDateFormat sdf = new SimpleDateFormat(format, Locale.getDefault());
			try {
				date = sdf.parse(str);
			} catch (ParseException e) {
				e.printStackTrace();
			}
		}

		return date;
	}

	/**
	 * 获取两个日期之间的差值
	 * 
	 * @param date1
	 * @param date2
	 * @return
	 */
	public static int getDiff(String str1, String str2) {

		if (TextUtils.isEmpty(str1) || TextUtils.isEmpty(str2))
			return 0;

		Date date1 = str2Date(str1, YYYYMMDD);
		Date date2 = str2Date(str2, YYYYMMDD);

		return (int) ((date2.getTime() - date1.getTime()) / (1000 * 60 * 60 * 24));

	}
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值