Android开发中日期工具类DateUtil完整实例

本文实例讲述了Android开发中日期工具类DateUtil。分享给大家供大家参考,具体如下:

/** * 日期操作工具类. * @Project ERPForAndroid * @Package com.ymerp.android.tools * @author chenlin * @version 1.0 */ @SuppressLint("SimpleDateFormat") public class DateUtil { private static final String FORMAT = "yyyy-MM-dd HH:mm:ss"; private static final SimpleDateFormat datetimeFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); private static final SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); private static final SimpleDateFormat timeFormat = new SimpleDateFormat("HH:mm:ss"); public static Date str2Date(String str) { return str2Date(str, null); } /** * 字符串转时间 * @param str * @param format * @return */ public static Date str2Date(String str, String format) { if (str == null || str.length() == 0) { return null; } if (format == null || format.length() == 0) { format = FORMAT; } Date date = null; try { SimpleDateFormat sdf = new SimpleDateFormat(format); date = sdf.parse(str); } catch (Exception e) { e.printStackTrace(); } return date; } public static Calendar str2Calendar(String str) { return str2Calendar(str, null); } public static Calendar str2Calendar(String str, String format) { Date date = str2Date(str, format); if (date == null) { return null; } Calendar c = Calendar.getInstance(); c.setTime(date); return c; } public static String date2Str(Calendar c) {// yyyy-MM-dd HH:mm:ss return date2Str(c, null); } public static String date2Str(Calendar c, String format) { if (c == null) { return null; } return date2Str(c.getTime(), format); } public static String date2Str(Date d) {// yyyy-MM-dd HH:mm:ss return date2Str(d, null); } public static String date2Str(Date d, String format) {// yyyy-MM-dd HH:mm:ss if (d == null) { return null; } if (format == null || format.length() == 0) { format = FORMAT; } SimpleDateFormat sdf = new SimpleDateFormat(format); String s = sdf.format(d); return s; } public static String getCurDateStr() { Calendar c = Calendar.getInstance(); c.setTime(new Date()); return c.get(Calendar.YEAR) + "-" + (c.get(Calendar.MONTH) + 1) + "-" + c.get(Calendar.DAY_OF_MONTH) + "-" + c.get(Calendar.HOUR_OF_DAY) + ":" + c.get(Calendar.MINUTE) + ":" + c.get(Calendar.SECOND); } /** * 获得当前日期的字符串格式 * * @param format * @return */ public static String getCurDateStr(String format) { Calendar c = Calendar.getInstance(); return date2Str(c, format); } /** * 格式到秒 * * @param time * @return */ public static String getMillon(long time) { return new SimpleDateFormat("yyyy-MM-dd-HH-mm-ss").format(time); } /** * 格式到天 * * @param time * @return */ public static String getDay(long time) { return new SimpleDateFormat("yyyy-MM-dd").format(time); } /** * 格式到毫秒 * * @param time * @return */ public static String getSMillon(long time) { return new SimpleDateFormat("yyyy-MM-dd-HH-mm-ss-SSS").format(time); } /** * 字符串转换到时间格式 * * @param dateStr * 需要转换的字符串 * @param formatStr * 需要格式的目标字符串 举例 yyyy-MM-dd * @return Date 返回转换后的时间 * @throws ParseException * 转换异常 */ public static Date StringToDate(String dateStr, String formatStr) { DateFormat sdf = new SimpleDateFormat(formatStr); Date date = null; try { date = sdf.parse(dateStr); } catch (ParseException e) { e.printStackTrace(); } return date; } /** * 转化时间输入时间与当前时间的间隔 * * @param timestamp * @return */ public static String converTime(long timestamp) { long currentSeconds = System.currentTimeMillis() / 1000; long timeGap = currentSeconds - timestamp;// 与现在时间相差秒数 String timeStr = null; if (timeGap > 24 * 60 * 60) {// 1天以上 timeStr = timeGap / (24 * 60 * 60) + "天前"; } else if (timeGap > 60 * 60) {// 1小时-24小时 timeStr = timeGap / (60 * 60) + "小时前"; } else if (timeGap > 60) {// 1分钟-59分钟 timeStr = timeGap / 60 + "分钟前"; } else {// 1秒钟-59秒钟 timeStr = "刚刚"; } return timeStr; } /** * 把字符串转化为时间格式 * * @param timestamp * @return */ public static String getStandardTime(long timestamp) { SimpleDateFormat sdf = new SimpleDateFormat("MM月dd日 HH:mm"); Date date = new Date(timestamp * 1000); sdf.format(date); return sdf.format(date); } /** * 获得当前日期时间 日期时间格式yyyy-MM-dd HH:mm:ss * * @return */ public static String currentDatetime() { return datetimeFormat.format(now()); } /** * 格式化日期时间 日期时间格式yyyy-MM-dd HH:mm:ss * * @return */ public static String formatDatetime(Date date) { return datetimeFormat.format(date); } /** * 获得当前时间 时间格式HH:mm:ss * * @return */ public static String currentTime() { return timeFormat.format(now()); } /** * 格式化时间 时间格式HH:mm:ss * * @return */ public static String formatTime(Date date) { return timeFormat.format(date); } /** * 获得当前时间的<code>java.util.Date</code>对象 * * @return */ public static Date now() { return new Date(); } public static Calendar calendar() { Calendar cal = GregorianCalendar.getInstance(Locale.CHINESE); cal.setFirstDayOfWeek(Calendar.MONDAY); return cal; } /** * 获得当前时间的毫秒数 * * 详见{@link System#currentTimeMillis()} * * @return */ public static long millis() { return System.currentTimeMillis(); } /** * * 获得当前Chinese月份 * * @return */ public static int month() { return calendar().get(Calendar.MONTH) + 1; } /** * 获得月份中的第几天 * * @return */ public static int dayOfMonth() { return calendar().get(Calendar.DAY_OF_MONTH); } /** * 今天是星期的第几天 * * @return */ public static int dayOfWeek() { return calendar().get(Calendar.DAY_OF_WEEK); } /** * 今天是年中的第几天 * * @return */ public static int dayOfYear() { return calendar().get(Calendar.DAY_OF_YEAR); } /** * 判断原日期是否在目标日期之前 * * @param src * @param dst * @return */ public static boolean isBefore(Date src, Date dst) { return src.before(dst); } /** * 判断原日期是否在目标日期之后 * * @param src * @param dst * @return */ public static boolean isAfter(Date src, Date dst) { return src.after(dst); } /** * 判断两日期是否相同 * * @param date1 * @param date2 * @return */ public static boolean isEqual(Date date1, Date date2) { return date1.compareTo(date2) == 0; } /** * 判断某个日期是否在某个日期范围 * * @param beginDate * 日期范围开始 * @param endDate * 日期范围结束 * @param src * 需要判断的日期 * @return */ public static boolean between(Date beginDate, Date endDate, Date src) { return beginDate.before(src) && endDate.after(src); } /** * 获得当前月的最后一天 * * HH:mm:ss为0,毫秒为999 * * @return */ public static Date lastDayOfMonth() { Calendar cal = calendar(); cal.set(Calendar.DAY_OF_MONTH, 0); // M月置零 cal.set(Calendar.HOUR_OF_DAY, 0);// H置零 cal.set(Calendar.MINUTE, 0);// m置零 cal.set(Calendar.SECOND, 0);// s置零 cal.set(Calendar.MILLISECOND, 0);// S置零 cal.set(Calendar.MONTH, cal.get(Calendar.MONTH) + 1);// 月份+1 cal.set(Calendar.MILLISECOND, -1);// 毫秒-1 return cal.getTime(); } /** * 获得当前月的第一天 * * HH:mm:ss SS为零 * * @return */ public static Date firstDayOfMonth() { Calendar cal = calendar(); cal.set(Calendar.DAY_OF_MONTH, 1); // M月置1 cal.set(Calendar.HOUR_OF_DAY, 0);// H置零 cal.set(Calendar.MINUTE, 0);// m置零 cal.set(Calendar.SECOND, 0);// s置零 cal.set(Calendar.MILLISECOND, 0);// S置零 return cal.getTime(); } private static Date weekDay(int week) { Calendar cal = calendar(); cal.set(Calendar.DAY_OF_WEEK, week); return cal.getTime(); } /** * 获得周五日期 * * 注:日历工厂方法{@link #calendar()}设置类每个星期的第一天为Monday,US等每星期第一天为sunday * * @return */ public static Date friday() { return weekDay(Calendar.FRIDAY); } /** * 获得周六日期 * * 注:日历工厂方法{@link #calendar()}设置类每个星期的第一天为Monday,US等每星期第一天为sunday * * @return */ public static Date saturday() { return weekDay(Calendar.SATURDAY); } /** * 获得周日日期 注:日历工厂方法{@link #calendar()}设置类每个星期的第一天为Monday,US等每星期第一天为sunday * * @return */ public static Date sunday() { return weekDay(Calendar.SUNDAY); } /** * 将字符串日期时间转换成java.util.Date类型 日期时间格式yyyy-MM-dd HH:mm:ss * * @param datetime * @return */ public static Date parseDatetime(String datetime) throws ParseException { return datetimeFormat.parse(datetime); } /** * 将字符串日期转换成java.util.Date类型 日期时间格式yyyy-MM-dd * * @param date * @return * @throws ParseException */ public static Date parseDate(String date) throws ParseException { return dateFormat.parse(date); } /** * 将字符串日期转换成java.util.Date类型 时间格式 HH:mm:ss * * @param time * @return * @throws ParseException */ public static Date parseTime(String time) throws ParseException { return timeFormat.parse(time); } /** * 根据自定义pattern将字符串日期转换成java.util.Date类型 * * @param datetime * @param pattern * @return * @throws ParseException */ public static Date parseDatetime(String datetime, String pattern) throws ParseException { SimpleDateFormat format = (SimpleDateFormat) datetimeFormat.clone(); format.applyPattern(pattern); return format.parse(datetime); } /** * 把秒格式化为分种小时 * * @param second * @return */ public static String parseSecond(int second) { if (second >= 60) { return second / 60 + "分"; } else if (second >= 60 * 60) { return second / 60 * 60 + "时"; } else if (second >= 60 * 60 * 24) { return second / 60 * 60 + "天"; } else { return second + "秒"; } } /** * 比较时间大小 * @param begin * @param end * @return */ public static int compareDate(String begin, String end) { DateFormat df = new SimpleDateFormat("yyyy-MM-dd hh:mm"); try { Date beginDate = df.parse(begin); Date endDate = df.parse(end); if (beginDate.getTime() < endDate.getTime()) { return 1; } else if (beginDate.getTime() > endDate.getTime()) { return -1; } else { return 0; } } catch (Exception exception) { exception.printStackTrace(); } return 0; } /** * 获得年份 * @param date * @return */ public int getYear(Date date){ Calendar c = Calendar.getInstance(); c.setTime(date); return c.get(Calendar.YEAR); } /** * 获得月份 * @param date * @return */ public int getMonth(Date date){ Calendar c = Calendar.getInstance(); c.setTime(date); return c.get(Calendar.MONTH) + 1; } /** * 获得星期几 * @param date * @return */ public int getWeek(Date date){ Calendar c = Calendar.getInstance(); c.setTime(date); return c.get(Calendar.WEEK_OF_YEAR); } /** * 获得日期 * @param date * @return */ public int getDay(Date date){ Calendar c = Calendar.getInstance(); c.setTime(date); return c.get(Calendar.DATE); } /** * 获得天数差 * @param begin * @param end * @return */ public long getDayDiff(Date begin, Date end){ long day = 1; if(end.getTime() < begin.getTime()){ day = -1; }else if(end.getTime() == begin.getTime()){ day = 1; }else { day += (end.getTime() - begin.getTime())/(24 * 60 * 60 * 1000) ; } return day; } }

PS:这里再为大家推荐几款关于日期与时间计算的在线工具供大家参考使用:

在线日期/天数计算器:
http://tools.jb51.net/jisuanqi/date_jisuanqi

在线万年历日历:
http://tools.jb51.net/bianmin/wannianli

在线阴历/阳历转换工具:
http://tools.jb51.net/bianmin/yinli2yangli

Unix时间戳(timestamp)转换工具:
http://tools.jb51.net/code/unixtime

更多关于Android相关内容感兴趣的读者可查看本站专题:《Android日期与时间操作技巧总结》、《Android开发入门与进阶教程》、《Android基本组件用法总结》、《Android视图View技巧总结》、《Android布局layout技巧总结》及《Android控件用法总结》

希望本文所述对大家Android程序设计有所帮助。

时间: 2024-11-29 16:15:14

Android开发中日期工具类DateUtil完整实例的相关文章

Android开发中超好用的正则表达式工具类RegexUtil完整实例

本文实例讲述了Android开发中超好用的正则表达式工具类RegexUtil.分享给大家供大家参考,具体如下: /*********************************************** * 正则表达式工具 * * @author chen.lin * @version 1.0 ************************************************/ public class RegexUtil { /** * 车牌号码Pattern */ pub

Android开发实现HttpClient工具类

  在Android开发中我们经常会用到网络连接功能与服务器进行数据的交互,为此Android的SDK提供了Apache的HttpClient来方便我们使用各种Http服务.你可以把HttpClient想象成一个浏览器,通过它的API我们可以很方便的发出GET,POST请求(当然它的功能远不止这些). 比如你只需以下几行代码就能发出一个简单的GET请求并打印响应结果: try { // 创建一个默认的HttpClient HttpClient httpclient = new DefaultHt

Android开发之超强图片工具类BitmapUtil完整实例

本文实例讲述了Android开发之超强图片工具类BitmapUtil.分享给大家供大家参考,具体如下: 说明:为了方便大家使用,本人把大家常用的图片处理代码集中到这个类里 使用了LruCache与SoftReference /** * 图片加载及转化工具 ----------------------------------------------------------------------- 延伸:一个Bitmap到底占用多大内存?系统给每个应用程序分配多大内存? Bitmap占用的内存为:

Android开发实现的几何图形工具类GeometryUtil完整实例

本文实例讲述了Android开发实现的几何图形工具类GeometryUtil.分享给大家供大家参考,具体如下: package com.android.imooc.goo; import android.graphics.PointF; /** * 几何图形工具 */ public class GeometryUtil { /** * As meaning of method name. 获得两点之间的距离 * * @param p0 * @param p1 * @return */ publi

Android开发实现查询远程服务器的工具类QueryUtils完整实例

本文实例讲述了Android开发实现查询远程服务器的工具类QueryUtils.分享给大家供大家参考,具体如下: /** * 查询远程服务器的工具 * @author chen.lin * */ public class QueryUtils { private static final String TAG = "CommonUtils"; private static QueryUtils instance; private SharedPreferences sp; privat

android开发中自定义dialog的布局样式实例

在网上找了很多关于dialog的自定义样式的问题,还有很多人写得比较复杂,需要改动style什么的,或者是自定义dialog搞得很复杂,我最后还是找到了方法来实现. 下面是我的dialog布局xml文件: [mw_shl_code=java,true]<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com

Android开发中4个常用的工具类【Toast、SharedPreferences、网络及屏幕操作】

本文实例讲述了Android开发中4个常用的工具类.分享给大家供大家参考,具体如下: 1.土司工具类(Toast管理) /** * Toast统一管理类 * * @Project App_ZXing * @Package com.android.scan * @author chenlin * @version 1.0 * @Date 2013年7月6日 * @Note TODO */ public class ToastUtil { private ToastUtil() { /* canno

Android开发中实现IOS风格底部选择器(支持时间 日期 自定义)_Android

本文Github代码链接 https://github.com/AndroidMsky/AndoirdIOSPicker 先上图吧: 这是笔者最近一个项目一直再用的一个选择器库,自己也在其中做了修改,并决定持续维护下去. 先看使用方法: 日期选择: private void showDateDialog(List<Integer> date) { DatePickerDialog.Builder builder = new DatePickerDialog.Builder(this); bui

Android开发中,那些让你相见恨晚的方法、类或接口

PS:本文内容来自我在知乎上对Android开发中,有哪些让你觉得相见恨晚的方法.类或接口?这一问题的回答,目前就总结这些,日后若有新的发现,随时补充.欢淫点赞. getParent().requestDisallowInterceptTouchEvent(true);剥夺父view 对touch 事件的处理权,谁用谁知道. ArgbEvaluator.evaluate(float fraction, Object startValue, Object endValue); 用于根据一个起始颜色