调用方法
// 获取当前时间的字符串表示 String currentDateStr = DateUtil.getCurrentDate("yyyy-MM-dd HH:mm:ss"); System.out.println("当前时间: " + currentDateStr); // 将时间戳格式化为指定格式的字符串 long timestamp = System.currentTimeMillis(); String formattedTimestamp = DateUtil.formatToStr(timestamp, "yyyy-MM-dd HH:mm:ss"); System.out.println("格式化时间戳: " + formattedTimestamp); // 将字符串时间格式化为指定格式 String dateString = "2024-07-15 12:00:00"; String formattedDateString = DateUtil.formatStringDate(dateString, "MM/dd/yyyy"); System.out.println("格式化字符串时间: " + formattedDateString); // 获取当前时间的日期对象 Date currentTime = DateUtil.getCurrentTime(); System.out.println("当前时间对象: " + currentTime); // 将日期对象格式化为指定格式的时间字符串 String formattedTime = DateUtil.formatTime(currentTime, "yyyy-MM-dd HH:mm:ss"); System.out.println("格式化日期对象: " + formattedTime); // 解析指定格式的时间字符串为日期对象 try { Date parsedDate = DateUtil.parseTime("2024-07-15 12:00:00", "yyyy-MM-dd HH:mm:ss"); System.out.println("解析后的日期对象: " + parsedDate); } catch (ParseException e) { e.printStackTrace(); } // 计算两个日期之间的时间差,返回指定时间单位的差值 Date date1 = new Date(); Date date2 = new Date(date1.getTime() + TimeUnit.HOURS.toMillis(5)); // 5小时后的时间 long timeDifference = DateUtil.getTimeDifference(date1, date2, TimeUnit.HOURS); System.out.println("时间差: " + timeDifference + " 小时"); // 判断指定时间是否在给定时间区间内 Date startTime = new Date(date1.getTime() - TimeUnit.HOURS.toMillis(1)); // 1小时前 Date endTime = new Date(date1.getTime() + TimeUnit.HOURS.toMillis(1)); // 1小时后 boolean isInRange = DateUtil.isInTimeRange(date1, startTime, endTime); System.out.println("是否在时间区间内: " + isInRange); // 判断指定年份是否为闰年 int year = 2024; boolean isLeapYear = DateUtil.isLeapYear(year); System.out.println(year + "年是否是闰年: " + isLeapYear); // 获取指定日期对象的年份 int yearFromDate = DateUtil.getYearFromDate(currentTime); System.out.println("年份: " + yearFromDate); // 获取指定日期对象的月份 int monthFromDate = DateUtil.getMonthFromDate(currentTime); System.out.println("月份: " + monthFromDate); // 获取指定日期对象的星期 int weekdayFromDate = DateUtil.getWeekdayFromDate(currentTime); System.out.println("星期: " + weekdayFromDate);
具体代码如下
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; /** * 描述: 主要功能格式化时间工具类 * 格式: yyyy-MM-dd HH:mm:ss */ public class DateUtil { // 日期格式年份,例如:2022,2023 public static final String FORMAT_YYYY = "yyyy"; // 其他格式常量... private static final TimeZone DEFAULT_TIMEZONE = TimeZone.getDefault(); private static TimeZone DefaultTimeZone = TimeZone.getDefault(); /** * 获取当前时间的字符串表示 * * @param pattern 时间格式 * @return 当前时间的字符串表示 */ public static String getCurrentDate(String pattern) { return formatToStr(new Date(), pattern); } /** * 将时间戳格式化为指定格式的字符串 * * @param timestamp 时间戳 * @param pattern 时间格式 * @return 格式化后的时间字符串 */ public static String formatToStr(long timestamp, String pattern) { return formatToStr(new Date(timestamp), pattern); } /** * 将日期对象格式化为指定格式的字符串 * * @param date 日期对象 * @param pattern 时间格式 * @return 格式化后的时间字符串 */ public static String formatToStr(Date date, String pattern) { DateFormat dateFormat = getDateFormat(pattern); return dateFormat.format(date); } /** * 获取指定格式的日期格式化对象 * * @param pattern 时间格式 * @return 日期格式化对象 */ private static DateFormat getDateFormat(String pattern) { SimpleDateFormat dateFormat = new SimpleDateFormat(pattern); dateFormat.setTimeZone(DEFAULT_TIMEZONE); return dateFormat; } /** * 格式化字符串时间为指定格式 * * @param dateString 字符串时间 * @param format 格式 * @return 格式化后的时间字符串 */ public static String formatStringDate(String dateString, String format) { SimpleDateFormat inputFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); SimpleDateFormat outputFormat = new SimpleDateFormat(format); try { Date date = inputFormat.parse(dateString); return outputFormat.format(date); } catch (ParseException | java.text.ParseException e) { e.printStackTrace(); } return ""; } /** * 获取当前时间的日期对象 * * @return 当前时间的日期对象 */ public static Date getCurrentTime() { return new Date(); } /** * 将日期对象格式化为指定格式的时间字符串 * * @param date 日期对象 * @param pattern 时间格式 * @return 格式化后的时间字符串 */ public static String formatTime(Date date, String pattern) { SimpleDateFormat sdf = new SimpleDateFormat(pattern); return sdf.format(date); } /** * 解析指定格式的时间字符串为日期对象 * * @param time 时间字符串 * @param pattern 时间格式 * @return 解析后的日期对象 * @throws ParseException 解析异常 */ public static Date parseTime(String time, String pattern) throws ParseException { SimpleDateFormat sdf = new SimpleDateFormat(pattern); try { return sdf.parse(time); } catch (java.text.ParseException e) { throw new RuntimeException(e); } } /** * 计算两个日期之间的时间差,返回指定时间单位的差值 * * @param date1 第一个日期对象 * @param date2 第二个日期对象 * @param timeUnit 时间单位 * @return 时间差的差值 */ public static long getTimeDifference(Date date1, Date date2, TimeUnit timeUnit) { long difference = date2.getTime() - date1.getTime(); return timeUnit.convert(difference, TimeUnit.MILLISECONDS); } /** * 判断指定时间是否在给定时间区间内 * * @param time 待判断的时间 * @param startTime 时间区间的开始时间 * @param endTime 时间区间的结束时间 * @return 如果指定时间在时间区间内,返回 true;否则返回 false */ public static boolean isInTimeRange(Date time, Date startTime, Date endTime) { return time.after(startTime) && time.before(endTime); } /** * 判断指定年份是否为闰年 * * @param year 年份 * @return 如果是闰年,返回 true;否则返回 false */ public static boolean isLeapYear(int year) { return (year % 4 == 0 && year % 100 != 0) || year % 400 == 0; } /** * 获取指定日期对象的年份 * * @param date 日期对象 * @return 年份 */ public static int getYearFromDate(Date date) { Calendar calendar = Calendar.getInstance(); calendar.setTime(date); return calendar.get(Calendar.YEAR); } /** * 获取指定日期对象的月份 * * @param date 日期对象 * @return 月份 */ public static int getMonthFromDate(Date date) { Calendar calendar = Calendar.getInstance(); calendar.setTime(date); return calendar.get(Calendar.MONTH) + 1; } /** * 获取指定日期对象的星期 * * @param date 日期对象 * @return 星期,1 表示星期一,2 表示星期二,依次类推 */ public static int getWeekdayFromDate(Date date) { Calendar calendar = Calendar.getInstance(); calendar.setTime(date); return calendar.get(Calendar.DAY_OF_WEEK); } }