package com.uiui.zyos.utils; import android.content.Context; import android.os.Build; import android.text.TextUtils; import android.util.Log; import androidx.annotation.NonNull; import androidx.annotation.RequiresApi; import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.time.LocalDate; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.util.Calendar; import java.util.Date; import java.util.Locale; public class TimeUtils { private static final String TAG = TimeUtils.class.getSimpleName(); private static DateFormat df = new SimpleDateFormat("HH:mm", Locale.getDefault()); public static final long DAY_TIME = 60 * 60 * 24 * 1000; public static final long MINUTE_TIME = 60 * 1000; @RequiresApi(api = Build.VERSION_CODES.O) public static boolean isTodayTime(long timeStamp) { String time = transferLongToDate(timeStamp); DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); LocalDateTime localTime = LocalDateTime.parse(time, dtf); LocalDateTime startTime = LocalDate.now().atTime(0, 0, 0); LocalDateTime endTime = LocalDate.now().atTime(23, 59, 59); return localTime.isAfter(startTime) && localTime.isBefore(endTime); } public static String transferLongToDate(Long millisecond) { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Date date = new Date(millisecond); return sdf.format(date); } public static String getDateAndWeek(Long millisecond) { SimpleDateFormat sdf = new SimpleDateFormat("MM月dd日"); Date date = new Date(millisecond); String dateString = sdf.format(date); return dateString + "\t" + getWeek(); } public static String formatTime(Long s) { if (s == 0) { return "0分钟"; } Integer ss = 1; Integer mi = ss * 60; Integer hh = mi * 60; Integer dd = hh * 24; Long day = s / dd; Long hour = (s - day * dd) / hh; Long minute = (s - day * dd - hour * hh) / mi; Long second = (s - day * dd - hour * hh - minute * mi) / ss; Long milliSecond = s - day * dd - hour * hh - minute * mi - second * ss; StringBuffer sb = new StringBuffer(); if (day > 0) { sb.append(day + "天"); } if (hour > 0) { sb.append(hour + "小时"); } if (minute > 0) { sb.append(minute + "分"); } if (second > 0) { sb.append(second + "秒"); } // if (milliSecond > 0) { // sb.append(milliSecond + "毫秒"); // } return sb.toString(); } /** * 是否在管控时间内 * * @param context * @param startTime * @param endTime * @return */ public static ContralTime getContralTime(Context context, String startTime, String endTime) { if (null == startTime || null == endTime || ("00:00".equals(startTime) && "00:00".equals(endTime))) { return null; } else { try { Date startDate = df.parse(startTime.trim()); Date endDate = df.parse(endTime.trim()); ContralTime contralTime = new ContralTime(); contralTime.setStartTime(df.format(startDate)); contralTime.setEndTime(df.format(endDate)); return contralTime; } catch (ParseException e) { e.printStackTrace(); return null; } } } /** * @return 根据日期取得星期几 */ public static String getWeek() { Date date = new Date(); String[] weeks = {"星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"}; Calendar cal = Calendar.getInstance(); cal.setTime(date); int weekIndex = cal.get(Calendar.DAY_OF_WEEK) - 1; if (weekIndex < 0) { weekIndex = 0; } return weeks[weekIndex]; } public static class ContralTime { //format HH:mm String startTime; String endTime; public ContralTime() { } public ContralTime(String startT, String endT) { this.startTime = startT; this.endTime = endT; } public String getStartTime() { return startTime; } public void setStartTime(String startT) { this.startTime = startT; } public String getEndTime() { return endTime; } public void setEndTime(String endT) { this.endTime = endT; } public static DateFormat getDf() { return df; } public static void setDf(DateFormat d) { df = d; } public String getNowTimeString(long time) { return df.format(new Date(time)); } public boolean inControlTime() { long time = System.currentTimeMillis(); return inControlTime(time); } public boolean inControlTime(long time) { return inControlTime(df.format(new Date(time))); } public boolean inControlTime(String time) { if (TextUtils.isEmpty(time)) { throw new RuntimeException("Time is empty"); } else { if (!time.contains(":")) { throw new RuntimeException("Time format error"); } } try { Date startDate = df.parse(startTime); Date endDate = df.parse(endTime); Date nowDate = df.parse(time); if (startDate.getTime() > endDate.getTime()) { //开始时间大于结束时间 列 16:00-01:00 endDate.setTime(endDate.getTime() + DAY_TIME); } Log.e(TAG, "inControlTime: " + (startDate.getTime() - MINUTE_TIME)); assert nowDate != null; // if (nowDate.getTime() <= startDate.getTime() - MINUTE_TIME || nowDate.getTime() >= endDate.getTime()) { if (nowDate.getTime() >= startDate.getTime() && nowDate.getTime() <= endDate.getTime()) { return true; } else { return false; } } catch (ParseException e) { e.printStackTrace(); } return false; } @NonNull @Override public String toString() { return startTime + "\t-\t" + endTime; } } }