《android 日期工具类》
来源:互联网 发布:淘宝访客数是什么意思 编辑:程序博客网 时间:2024/06/06 17:20
直接贴代码:
/** * <h3>日期工具类</h3> * <p>主要实现了日期的常用操作 */@SuppressLint("SimpleDateFormat")public final class DateUtil { /** * yyyy-MM-dd HH:mm:ss字符串 */ public static final String DEFAULT_DATE_TIME_FORMAT = "yyyy-MM-dd HH:mm:ss"; /** * yyyy-MM-dd字符串 */ public static final String DEFAULT_FORMAT_DATE = "yyyy-MM-dd"; /** * HH:mm:ss字符串 */ public static final String DEFAULT_FORMAT_TIME = "HH:mm:ss"; /** * yyyy-MM-dd HH:mm:ss格式 */ public static final ThreadLocal<SimpleDateFormat> defaultDateTimeFormat = new ThreadLocal<SimpleDateFormat>() { @Override protected SimpleDateFormat initialValue() { return new SimpleDateFormat(DEFAULT_DATE_TIME_FORMAT); } }; /** * yyyy-MM-dd格式 */ public static final ThreadLocal<SimpleDateFormat> defaultDateFormat = new ThreadLocal<SimpleDateFormat>() { @Override protected SimpleDateFormat initialValue() { return new SimpleDateFormat(DEFAULT_FORMAT_DATE); } }; /** * HH:mm:ss格式 */ public static final ThreadLocal<SimpleDateFormat> defaultTimeFormat = new ThreadLocal<SimpleDateFormat>() { @Override protected SimpleDateFormat initialValue() { return new SimpleDateFormat(DEFAULT_FORMAT_TIME); } }; private DateUtil() { throw new RuntimeException(" ̄ 3 ̄"); } /** * 将long时间转成yyyy-MM-dd HH:mm:ss字符串<br> * * @param timeInMillis 时间long值 * @return yyyy-MM-dd HH:mm:ss */ public static String getDateTimeFromMillis(long timeInMillis) { return getDateTimeFormat(new Date(timeInMillis)); } /** * 将long时间转成yyyy-MM-dd字符串<br> * * @param timeInMillis * @return yyyy-MM-dd */ public static String getDateFromMillis(long timeInMillis) { return getDateFormat(new Date(timeInMillis)); } /** * 将date转成yyyy-MM-dd HH:mm:ss字符串 * <br> * * @param date Date对象 * @return yyyy-MM-dd HH:mm:ss */ public static String getDateTimeFormat(Date date) { return dateSimpleFormat(date, defaultDateTimeFormat.get()); } /** * 将年月日的int转成yyyy-MM-dd的字符串 * * @param year 年 * @param month 月 1-12 * @param day 日 * 注:月表示Calendar的月,比实际小1 * 对输入项未做判断 */ public static String getDateFormat(int year, int month, int day) { return getDateFormat(getDate(year, month, day)); } /** * 将date转成yyyy-MM-dd字符串<br> * * @param date Date对象 * @return yyyy-MM-dd */ public static String getDateFormat(Date date) { return dateSimpleFormat(date, defaultDateFormat.get()); } /** * 获得指定日期的前一天 * * @param specifiedDay * @return * @throws Exception */ public static String getSpecifiedDayBefore(String specifiedDay) {//SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd"); Calendar c = Calendar.getInstance(); Date date = null; try { date = new SimpleDateFormat("yy-MM-dd").parse(specifiedDay); } catch (ParseException e) { e.printStackTrace(); } c.setTime(date); int day = c.get(Calendar.DATE); c.set(Calendar.DATE, day - 1); String dayBefore = new SimpleDateFormat("yyyy-MM-dd").format(c.getTime()); return dayBefore; } /** * 获得HH:mm:ss的时间 * * @param date * @return */ public static String getTimeFormat(Date date) { return dateSimpleFormat(date, defaultTimeFormat.get()); } /** * 格式化日期显示格式 * * @param sdate 原始日期格式 "yyyy-MM-dd" * @param format 格式化后日期格式 * @return 格式化后的日期显示 */ public static String dateFormat(String sdate, String format) { SimpleDateFormat formatter = new SimpleDateFormat(format); java.sql.Date date = java.sql.Date.valueOf(sdate); return dateSimpleFormat(date, formatter); } /** * 格式化日期显示格式 * * @param date Date对象 * @param format 格式化后日期格式 * @return 格式化后的日期显示 */ public static String dateFormat(Date date, String format) { SimpleDateFormat formatter = new SimpleDateFormat(format); return dateSimpleFormat(date, formatter); } /** * 将date转成字符串 * * @param date Date * @param format SimpleDateFormat * <br> * 注: SimpleDateFormat为空时,采用默认的yyyy-MM-dd HH:mm:ss格式 * @return yyyy-MM-dd HH:mm:ss */ public static String dateSimpleFormat(Date date, SimpleDateFormat format) { if (format == null) format = defaultDateTimeFormat.get(); return (date == null ? "" : format.format(date)); } /** * 将"yyyy-MM-dd HH:mm:ss" 格式的字符串转成Date * * @param strDate 时间字符串 * @return Date */ public static Date getDateByDateTimeFormat(String strDate) { return getDateByFormat(strDate, defaultDateTimeFormat.get()); } /** * 将"yyyy-MM-dd" 格式的字符串转成Date * * @param strDate * @return Date */ public static Date getDateByDateFormat(String strDate) { return getDateByFormat(strDate, defaultDateFormat.get()); } /** * 将指定格式的时间字符串转成Date对象 * * @param strDate 时间字符串 * @param format 格式化字符串 * @return Date */ public static Date getDateByFormat(String strDate, String format) { return getDateByFormat(strDate, new SimpleDateFormat(format)); } /** * 将String字符串按照一定格式转成Date<br> * 注: SimpleDateFormat为空时,采用默认的yyyy-MM-dd HH:mm:ss格式 * * @param strDate 时间字符串 * @param format SimpleDateFormat对象 * @throws ParseException 日期格式转换出错 */ private static Date getDateByFormat(String strDate, SimpleDateFormat format) { if (format == null) format = defaultDateTimeFormat.get(); try { return format.parse(strDate); } catch (ParseException e) { e.printStackTrace(); } return null; } /** * 将年月日的int转成date * * @param year 年 * @param month 月 1-12 * @param day 日 * 注:月表示Calendar的月,比实际小1 */ public static Date getDate(int year, int month, int day) { Calendar mCalendar = Calendar.getInstance(); mCalendar.set(year, month - 1, day); return mCalendar.getTime(); } /** * 求两个日期相差天数 * * @param strat 起始日期,格式yyyy-MM-dd * @param end 终止日期,格式yyyy-MM-dd * @return 两个日期相差天数 */ public static long getIntervalDays(String strat, String end) { return ((java.sql.Date.valueOf(end)).getTime() - (java.sql.Date .valueOf(strat)).getTime()) / (3600 * 24 * 1000); } /** * 获得当前年份 * * @return year(int) */ public static int getCurrentYear() { Calendar mCalendar = Calendar.getInstance(); return mCalendar.get(Calendar.YEAR); } /** * 获得当前月份 * * @return month(int) 1-12 */ public static int getCurrentMonth() { Calendar mCalendar = Calendar.getInstance(); return mCalendar.get(Calendar.MONTH) + 1; } /** * 获得当月几号 * * @return day(int) */ public static int getDayOfMonth() { Calendar mCalendar = Calendar.getInstance(); return mCalendar.get(Calendar.DAY_OF_MONTH); } /** * 获得今天的日期(格式:yyyy-MM-dd) * * @return yyyy-MM-dd */ public static String getToday() { Calendar mCalendar = Calendar.getInstance(); return getDateFormat(mCalendar.getTime()); } /** * 获得昨天的日期(格式:yyyy-MM-dd) * * @return yyyy-MM-dd */ public static String getYesterday() { Calendar mCalendar = Calendar.getInstance(); mCalendar.add(Calendar.DATE, -1); return getDateFormat(mCalendar.getTime()); } /** * 获得前天的日期(格式:yyyy-MM-dd) * * @return yyyy-MM-dd */ public static String getBeforeYesterday() { Calendar mCalendar = Calendar.getInstance(); mCalendar.add(Calendar.DATE, -2); return getDateFormat(mCalendar.getTime()); } /** * 获得几天之前或者几天之后的日期 * * @param diff 差值:正的往后推,负的往前推 * @return */ public static String getOtherDay(int diff) { Calendar mCalendar = Calendar.getInstance(); mCalendar.add(Calendar.DATE, diff); return getDateFormat(mCalendar.getTime()); } /** * 取得给定日期加上一定天数后的日期对象. * * @param //date 给定的日期对象 * @param amount 需要添加的天数,如果是向前的天数,使用负数就可以. * @return Date 加上一定天数以后的Date对象. */ public static String getCalcDateFormat(String sDate, int amount) { Date date = getCalcDate(getDateByDateFormat(sDate), amount); return getDateFormat(date); } /** * 取得给定日期加上一定天数后的日期对象. * * @param date 给定的日期对象 * @param amount 需要添加的天数,如果是向前的天数,使用负数就可以. * @return Date 加上一定天数以后的Date对象. */ public static Date getCalcDate(Date date, int amount) { Calendar cal = Calendar.getInstance(); cal.setTime(date); cal.add(Calendar.DATE, amount); return cal.getTime(); } /** * 获得一个计算十分秒之后的日期对象 * * @param date * @param hOffset 时偏移量,可为负 * @param mOffset 分偏移量,可为负 * @param sOffset 秒偏移量,可为负 * @return */ public static Date getCalcTime(Date date, int hOffset, int mOffset, int sOffset) { Calendar cal = Calendar.getInstance(); if (date != null) cal.setTime(date); cal.add(Calendar.HOUR_OF_DAY, hOffset); cal.add(Calendar.MINUTE, mOffset); cal.add(Calendar.SECOND, sOffset); return cal.getTime(); } /** * 根据指定的年月日小时分秒,返回一个java.Util.Date对象。 * * @param year 年 * @param month 月 0-11 * @param date 日 * @param hourOfDay 小时 0-23 * @param minute 分 0-59 * @param second 秒 0-59 * @return 一个Date对象 */ public static Date getDate(int year, int month, int date, int hourOfDay, int minute, int second) { Calendar cal = Calendar.getInstance(); cal.set(year, month, date, hourOfDay, minute, second); return cal.getTime(); } /** * 获得年月日数据 * * @param sDate yyyy-MM-dd格式 * @return arr[0]:年, arr[1]:月 0-11 , arr[2]日 */ public static int[] getYearMonthAndDayFrom(String sDate) { return getYearMonthAndDayFromDate(getDateByDateFormat(sDate)); } /** * 获得年月日数据 * * @return arr[0]:年, arr[1]:月 0-11 , arr[2]日 */ public static int[] getYearMonthAndDayFromDate(Date date) { Calendar calendar = Calendar.getInstance(); calendar.setTime(date); int[] arr = new int[3]; arr[0] = calendar.get(Calendar.YEAR); arr[1] = calendar.get(Calendar.MONTH); arr[2] = calendar.get(Calendar.DAY_OF_MONTH); return arr; }}
阅读全文
1 0
- 《android 日期工具类》
- android 日期工具类
- android日期工具类DateHelper
- Android DateUtlis(日期工具类)
- Android 日期工具类DateUtil
- Android 日期时间等转换工具类
- Android基础常用日期操作工具类
- Android日期/时间选择器(工具类)
- Android日期相关函数的工具类
- Android基础常用日期操作工具类
- Android日期工具类整合大全
- android 时间日期选择工具类
- Android日历开发:日期工具类TimeUtils
- android utils 日期工具
- Android工具类之日期操作工具类
- 【Java|Android】时间日期工具
- 工具类-日期工具类
- 日期工具类
- MySQL主键,外键,索引,唯一索引
- NP完全问题——证明EXACT 4SAT是NP完全问题
- 都市环游
- 总结
- Java中的字符串池
- 《android 日期工具类》
- 剑指offer:(35)时间效率和空间效率的平衡 :第一个只出现一次的字符
- 将虚拟按钮映射到屏幕上
- 无限极分类
- ORACLE:prompt、set feedback、set define
- JS生成二维码(兼容各种浏览器及中文)
- 常见的排序之一:冒泡排序
- 从源码编译TensorFlow CPU版本
- 写在最最前面