Files
Xuewang365OSNeutral/app/src/main/java/com/uiui/zyos/utils/TimeUtils.java
Fanhuitong 69bf8b4139 version:1.1
fix:
update:优化
2023-03-12 19:19:47 +08:00

219 lines
6.6 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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()) {
//开始时间大于结束时间 列 1600-0100
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;
}
}
}