package com.hdl.photovoltaic.utils; import android.annotation.SuppressLint; import android.text.TextUtils; import com.hdl.photovoltaic.config.UserConfigManage; import com.hdl.photovoltaic.enums.TimeType; import com.hdl.photovoltaic.other.HdlThreadLogic; import com.hdl.photovoltaic.ui.home.HomePageFragment; import com.hdl.sdk.link.core.utils.LanguageUtils; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.Locale; /** * 时间工具类 */ public class TimeUtils { public static final String zhDateYearMonthDayFormat = "yyyy/MM/dd"; public static final String zhDateYearMonthFormat = "yyyy/MM"; public static final String zhDateYearFormat = "yyyy"; public static final String enDateYearMonthDayFormat = "dd/MM/yyyy"; public static final String enDateYearMonthFormat = "MM/yyyy"; public static final String enDateYearFormat = "yyyy"; /** * 获取当前系统日期时间戳 * * @return 时间戳 */ public static long getCurrentTimestamp() { return new Date().getTime(); } /** * 获取日期格式 (2024/2/09,yyyy/DD/dd) * * @return 日期格式 (2024/2/09,yyyy/DD/dd) */ public static String getTimeDateFormat(String timeType) { String timeDateFormat = TimeUtils.zhDateYearMonthDayFormat; switch (timeType) { case TimeType.day: { timeDateFormat = TimeUtils.zhDateYearMonthDayFormat; if (!UserConfigManage.getInstance().isZh()) { timeDateFormat = TimeUtils.enDateYearMonthDayFormat; } } break; case TimeType.month: { timeDateFormat = TimeUtils.zhDateYearMonthFormat; if (!UserConfigManage.getInstance().isZh()) { timeDateFormat = TimeUtils.enDateYearMonthFormat; } } break; case TimeType.year: case TimeType.all: { timeDateFormat = TimeUtils.zhDateYearFormat; if (!UserConfigManage.getInstance().isZh()) { timeDateFormat = TimeUtils.enDateYearFormat; } } break; } return timeDateFormat; } /** * 获取分钟 * * @param timestamp 时间戳 * @return - */ public static String getMinuteTime(long timestamp) { try { SimpleDateFormat dateFormat = new SimpleDateFormat("mm", getLocale()); Date date = new Date(timestamp); return dateFormat.format(date); } catch (Exception e) { e.printStackTrace(); } return ""; } /** * 时间戳转时间(格式:yyyy-MM-dd) * * @param timestamp 时间戳 * @param date_format 时间格式(例如"yyyy/MM/dd") * @return - */ public static String getDateTimestamp(long timestamp, String date_format) { try { SimpleDateFormat dateFormat = new SimpleDateFormat(date_format, getLocale()); Date date = new Date(timestamp); return dateFormat.format(date); } catch (Exception e) { e.printStackTrace(); } return ""; } /** * 时间戳转时间(格式:yyyy-MM-dd HH:mm:ss) * * @param timestamp 时间戳 * @param isDisplaySeconds 是否显示秒,true显示 * @return - */ public static String getTimeFromTimestamp(long timestamp, boolean isDisplaySeconds) { try { String pattern = "yyyy-MM-dd HH:mm:ss"; if (isDisplaySeconds) { pattern = "yyyy-MM-dd HH:mm:ss"; if (UserConfigManage.getInstance().getCurrentAppLanguage().equals(LocalManageUtil.en)) { pattern = "dd-MM-yyyy HH:mm:ss"; } } else { pattern = "yyyy-MM-dd HH:mm"; if (UserConfigManage.getInstance().getCurrentAppLanguage().equals(LocalManageUtil.en)) { pattern = "dd-MM-yyyy HH:mm"; } } SimpleDateFormat dateFormat = new SimpleDateFormat(pattern, getLocale()); Date date = new Date(timestamp); return dateFormat.format(date); } catch (Exception e) { e.printStackTrace(); } return ""; } /** * 时间戳转时间(格式:yyyy-MM-dd HH:mm:ss) * * @param timestamp 时间戳 * ¬ * @return - */ public static String getTimeFromTimestamp(long timestamp) { try { String pattern = "yyyy-MM-dd HH:mm"; if (UserConfigManage.getInstance().getCurrentAppLanguage().equals(LocalManageUtil.en)) { pattern = "dd-MM-yyyy HH:mm"; } SimpleDateFormat dateFormat = new SimpleDateFormat(pattern, getLocale()); Date date = new Date(timestamp); return dateFormat.format(date); } catch (Exception e) { e.printStackTrace(); } return ""; } /** * 时间戳转时间(格式:yyyy-MM-dd HH:mm:ss) * * @param timestamp 时间戳 * @return - */ @SuppressLint("DefaultLocale") public static String getCalendarTimeFromTimestamp(long timestamp) { try { Calendar calendar = Calendar.getInstance(); calendar.setTimeInMillis(timestamp); int year = calendar.get(Calendar.YEAR); int month = calendar.get(Calendar.MONTH) + 1; // 月份从0开始,所以要加1 int day = calendar.get(Calendar.DAY_OF_MONTH); int hour = calendar.get(Calendar.HOUR_OF_DAY); int minute = calendar.get(Calendar.MINUTE); int second = calendar.get(Calendar.SECOND); return String.format("%04d-%02d-%02d %02d:%02d:%02d", year, month, day, hour, minute, second); } catch (Exception e) { e.printStackTrace(); } return ""; } /** * 加(日,月,年)计算 * * @param date 日历 * @param dayMonthYearToAdd 天数(日,月,年) * @return 日历 */ public static String addDayMonthYearToDate(Calendar date, int dayMonthYearToAdd, String dateFormat, String timeType) { Calendar newDate = (Calendar) date.clone(); switch (timeType) { case TimeType.day: { newDate.add(Calendar.DAY_OF_MONTH, dayMonthYearToAdd); } break; case TimeType.month: { newDate.add(Calendar.MONTH, dayMonthYearToAdd); } break; case TimeType.year: case TimeType.all: { newDate.add(Calendar.YEAR, dayMonthYearToAdd); } break; } return calendarToString(newDate, dateFormat); } /** * 减(日,月,年)计算 * * @param date 日历 * @param dayMonthYearToSubtract 天数 * @return 日历 */ public static String subtractDayMonthYearFromDate(Calendar date, int dayMonthYearToSubtract, String dateFormat, String timeType) { Calendar newDate = (Calendar) date.clone(); switch (timeType) { case TimeType.day: { newDate.add(Calendar.DAY_OF_MONTH, -dayMonthYearToSubtract); } break; case TimeType.month: { newDate.add(Calendar.MONTH, -dayMonthYearToSubtract); } break; case TimeType.year: case TimeType.all: { newDate.add(Calendar.YEAR, -dayMonthYearToSubtract); } break; } return calendarToString(newDate, dateFormat); } /** * 时间戳转Calendar * * @param timestamp 时间戳 * @return Calendar对象 */ public static Calendar timestampToCalendar(long timestamp) { // 将时间戳转换为日期 Date date = new Date(timestamp); // 使用Calendar类设置日期 Calendar calendar = Calendar.getInstance(); calendar.setTime(date); return calendar; } /** * 字符串日期格式转Calendar * * @param dateString (2023/04/01) * @param dateFormat (yyyy/MM/dd) * @return Calendar对象 */ public static Calendar stringToCalendar(String dateString, String dateFormat) { SimpleDateFormat sdf = new SimpleDateFormat(dateFormat, getLocale()); Calendar calendar = Calendar.getInstance(); try { Date date = sdf.parse(dateString); if (date != null) { calendar.setTime(date); } } catch (Exception ignored) { } return calendar; } /** * Calendar转字符串日期格式 * * @param dateFormat (yyyy/MM/dd) * @return Calendar对象 */ public static String calendarToString(Calendar calendar, String dateFormat) { SimpleDateFormat sdf = new SimpleDateFormat(dateFormat, getLocale()); return sdf.format(calendar.getTime()); } /** * Date转字符串日期格式 * * @param dateFormat (yyyy/MM/dd) * @return Calendar对象 */ public static String dateToString(Date date, String dateFormat) { SimpleDateFormat sdf = new SimpleDateFormat(dateFormat, getLocale()); return sdf.format(date.getTime()); } /** * 字符串日期格式转时间戳 * * @param dateString (2024/06/01) * @param dateFormat (yyyy/MM/dd) * @return 时间戳 */ public static long stringDateToTimestamp(String dateString, String dateFormat) { try { SimpleDateFormat slf = new SimpleDateFormat(dateFormat, getLocale()); Date date = slf.parse(dateString); if (date == null) { return 0; } return date.getTime(); // 获取时间戳 } catch (Exception ignored) { } return 0; } private static Locale getLocale() { return Locale.ENGLISH; } }