一、背景与功能
在Android开发中,经常会遇到需要处理和转换时间的情况,例如将时间戳转换为可读的日期格式,或将字符串表示的时间解析为时间戳,为了简化这些操作,可以编写一个时间工具类来封装常用的时间处理方法,这个工具类通常包括获取当前时间、格式化时间、解析时间、计算时间差等功能。
二、常用方法介绍
1、获取当前时间
getCurrentMillis()
: 返回当前时间的毫秒数。
getCurrentTimeYMDHMS()
: 返回当前时间的字符串表示,格式为"yyyy-MM-dd HH:mm:ss"。
getCurrentTimeYMD()
: 返回当前时间的字符串表示,格式为"yyyy-MM-dd"。
2、格式化时间
formatToStr(long timestamp, String pattern)
: 将时间戳格式化为指定格式的字符串。
formatToStr(Date date, String pattern)
: 将日期对象格式化为指定格式的字符串。
formatStringDate(String dateString, String format)
: 将字符串时间按照指定格式进行格式化。
3、解析时间
parseTime(String time, String pattern)
: 解析指定格式的时间字符串为日期对象。
string2Millis(String time)
: 将时间字符串转为时间戳,默认格式为"yyyy-MM-dd HH:mm:ss"。
string2Millis(String time, DateFormat format)
: 根据指定的日期格式解析时间字符串并返回时间戳。
4、计算时间差
getTimeDifference(Date date1, Date date2, TimeUnit timeUnit)
: 计算两个日期之间的时间差,可以指定时间单位(如天、小时、分钟等)。
getTimeSpan(final long millis0, final long millis1, final int unit)
: 获取两个时间毫秒数的时间差,差值形式以分钟返回。
5、判断时间区间
isInTimeRange(Date time, Date startTime, Date endTime)
: 判断指定时间是否在给定的时间区间内。
6、其他实用方法
isLeapYear(int year)
: 判断指定年份是否为闰年。
getYearFromDate(Date date)
: 获取指定日期对象的年份。
getMonthFromDate(Date date)
: 获取指定日期对象的月份。
getWeekdayFromDate(Date date)
: 获取指定日期对象的星期。
三、示例代码
以下是一个简单的时间工具类示例代码,展示了上述部分功能的实现:
import androidx.core.net.ParseException; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.TimeZone; import java.util.concurrent.TimeUnit; public class DateUtil { private static final TimeZone DEFAULT_TIMEZONE = TimeZone.getDefault(); private static final SimpleDateFormat DEFAULT_FORMAT = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.getDefault()); // 获取当前时间的字符串表示 public static String getCurrentDate(String pattern) { return formatToStr(new Date(), pattern); } // 将时间戳格式化为指定格式的字符串 public static String formatToStr(long timestamp, String pattern) { SimpleDateFormat sdf = new SimpleDateFormat(pattern); return sdf.format(new Date(timestamp)); } // 将日期对象格式化为指定格式的字符串 public static String formatToStr(Date date, String pattern) { SimpleDateFormat sdf = new SimpleDateFormat(pattern); return sdf.format(date); } // 将字符串时间按照指定格式进行格式化 public static String formatStringDate(String dateString, String format) { SimpleDateFormat formatter = new SimpleDateFormat(format); ParsePosition pos = new ParsePosition(0); Date date = formatter.parse(dateString, pos); return formatter.format(date); } // 将时间字符串转为时间戳 public static long string2Millis(String time) { return string2Millis(time, DEFAULT_FORMAT); } // 根据指定的日期格式解析时间字符串并返回时间戳 public static long string2Millis(String time, DateFormat format) { try { return format.parse(time).getTime(); } catch (ParseException e) { e.printStackTrace(); } return -1; } // 获取两个时间毫秒数的时间差,差值形式以分钟返回 public static long getTimeSpan(final long millis0, final long millis1, final int unit) { return millis2TimeSpan(Math.abs(millis0 millis1), unit); } // 计算时间差的辅助方法 private static long millis2TimeSpan(final long millis, final int unit) { return millis / unit; } // 判断指定时间是否在给定的时间区间内 public static boolean isInTimeRange(Date time, Date startTime, Date endTime) { return !time.before(startTime) && !time.after(endTime); } // 判断指定年份是否为闰年 public static boolean isLeapYear(int year) { Calendar cal = Calendar.getInstance(); cal.set(Calendar.YEAR, year); return cal.getActualMaximum(Calendar.DAY_OF_YEAR) > 365; } // 获取指定日期对象的年份 public static int getYearFromDate(Date date) { Calendar cal = Calendar.getInstance(); cal.setTime(date); return cal.get(Calendar.YEAR); } // 获取指定日期对象的月份 public static int getMonthFromDate(Date date) { Calendar cal = Calendar.getInstance(); cal.setTime(date); return cal.get(Calendar.MONTH); } // 获取指定日期对象的星期 public static int getWeekdayFromDate(Date date) { Calendar cal = Calendar.getInstance(); cal.setTime(date); return cal.get(Calendar.DAY_OF_WEEK); } }
四、相关问题与解答栏目
问题1:如何将一个时间戳转换为指定格式的日期字符串?
答:可以使用formatToStr
方法,传入时间戳和指定的日期格式字符串,要将时间戳转换为"yyyy-MM-dd HH:mm:ss"格式的字符串,可以这样调用:String formattedDate = DateUtil.formatToStr(timestamp, "yyyy-MM-dd HH:mm:ss");
。
问题2:如何计算两个日期之间的时间差(以分钟为单位)?
答:可以使用getTimeSpan
方法,传入两个日期的时间戳和单位(在本例中为MIN
表示分钟),要计算两个日期之间的时间差(以分钟为单位),可以这样调用:long timeDifference = DateUtil.getTimeSpan(startTimeMillis, endTimeMillis, DateUtil.MIN);
。
以上就是关于“Android时间转化工具类”的问题,朋友们可以点击主页了解更多内容,希望可以够帮助大家!
原创文章,作者:K-seo,如若转载,请注明出处:https://www.kdun.cn/ask/629512.html