package com.ifourthwall.dbm.seer.utils;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.Instant;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
public class DateString {
private static SimpleDateFormat sdfShort = new SimpleDateFormat("yyyy-MM-dd");
private static SimpleDateFormat sdfLong = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
private static SimpleDateFormat specialLong = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
private static SimpleDateFormat specialSdfShort = new SimpleDateFormat("yyyyMMdd");
private static SimpleDateFormat sdfSpecialHH = new SimpleDateFormat("HH:mm:ss");
// 统计类型
public static int REPORT_CONSTANT_TYPE_HOUR = 1;
// 统计类型
public static int REPORT_CONSTANT_TYPE_DAY = 2;
// 时间 59分钟59秒
public static long REPORT_KE_TUO_TIME_CONSTANT = 3599999;
/*
* (Unix时间戳)长整型类型转换为日期格式字符串
*/
public static String millisecondTosdfSpecialHH(long millisecond) {
return sdfSpecialHH.format(millisecond);
}
/*
* (Unix时间戳)长整型类型转换为日期格式字符串
*/
public static String millisecondSpecialSdfShort(long millisecond) {
return specialSdfShort.format(millisecond);
}
/*
* 日期时间格式字符串转换为Date类型
*/
public static Date stringLongToDate(String string) throws Exception {
return sdfLong.parse(string);
}
/*
* 日期时间格式字符串转换为Date类型
*/
public static Date stringSpecialLongToDate(String string) throws Exception {
return specialLong.parse(string);
}
/*
* 日期格式字符串转换为Date类型
*/
public static Date stringShortToDate(String string) throws Exception {
return sdfShort.parse(string);
}
/*
* 长整型毫秒(自1970-01-01 00:00:00 GMT过去的毫秒数,又称Unix时间戳)转换为Date类型
*/
public static Date millisecondToDate(long millisecond) {
return new Date(millisecond);
}
/*
* 日期时间格式字符串转换为(Unix时间戳)长整型类型
*/
public static long stringLongToMillisecond(String string) throws Exception {
return stringLongToDate(string).getTime();
}
/*
* 日期时间格式字符串转换为(Unix时间戳)长整型类型
*/
public static long stringSpecialLongToMillisecond(String string) throws Exception {
return stringSpecialLongToDate(string).getTime();
}
/*
* 日期格式字符串转换为(Unix时间戳)长整型类型
*/
public static long stringShortToMillisecond(String string) throws Exception {
return stringShortToDate(string).getTime();
}
/*
* Date类型转换为(Unix时间戳)长整型类型
*/
public static long dateToMillisecond(Date date) {
return date.getTime();
}
/*
* (Unix时间戳)长整型类型转换为日期时间格式字符串
*/
public static String millisecondToStringLong(long millisecond) {
return sdfLong.format(millisecond);
}
/*
* Date类型转换为日期时间格式字符串
*/
public static String dateToStringLong(Date date) {
return sdfLong.format(date);
}
/*
* (Unix时间戳)长整型类型转换为日期格式字符串
*/
public static String millisecondToStringShort(long millisecond) {
return sdfShort.format(millisecond);
}
/*
* Date类型转换为日期格式字符串
*/
public static String dateToStringShort(Date date) {
return sdfShort.format(date);
}
/**
* 转化的的时间
* @param mss
* @return 该毫秒数转换为 * days * hours * minutes * seconds 后的格式
* @author tanglei
*/
public static String formatDuring(long mss) {
// long days = mss / (1000 * 60 * 60 * 24);
long hours = (mss % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60);
long minutes = (mss % (1000 * 60 * 60)) / (1000 * 60);
long seconds = (mss % (1000 * 60)) / 1000;
return hours + ":" + minutes + ":" + seconds;
}
/**
*
* @param begin 时间段的开始
* @param end 时间段的结束
* @return 输入的两个Date类型数据之间的时间间格用* days * hours * minutes * seconds的格式展示
* @author tanglei
*/
public static String formatDuring(Date begin, Date end) {
return formatDuring(end.getTime() - begin.getTime());
}
/**
* @Description 是否为当天24h内
* @author tanglei
* @param inputJudgeDate 要判断是否在当天24h内的时间
* @return
* boolean
*/
public static boolean isToday(Date inputJudgeDate) {
boolean flag = false;
//获取当前系统时间
long longDate = System.currentTimeMillis();
Date nowDate = new Date(longDate);
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String format = dateFormat.format(nowDate);
String subDate = format.substring(0, 10);
//定义每天的24h时间范围
String beginTime = subDate + " 00:00:00";
String endTime = subDate + " 23:59:59";
Date parseBeginTime = null;
Date parseEndTime = null;
try {
parseBeginTime = dateFormat.parse(beginTime);
parseEndTime = dateFormat.parse(endTime);
} catch (ParseException e) {
e.getMessage();
}
if(!inputJudgeDate.after(parseEndTime) && !inputJudgeDate.before(parseBeginTime)) {
flag = true;
}
return flag;
}
/**
* 将某段时间切分成小时
* @param startDateTime
* @param endDateTime
* @return
*/
public static List<String> cutInterval(String startDateTime, String endDateTime){
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
LocalDateTime localDateTime1 =LocalDateTime.parse(startDateTime, formatter);
LocalDateTime end =LocalDateTime.parse(endDateTime, formatter);
//秒数置为0
LocalDateTime start = localDateTime1.withMinute(0);
//时间段分割
List<String> list = new ArrayList<>();
while(start.plusHours(1).isBefore(end.plusHours(1)))
{
list.add(localDateTimeToTimestamp(start)+"==="+localDateTimeToTimestamp(start.plusHours(1)));
start=start.plusHours(1);
}
return list;
}
public static String localDateTimeToTimestamp(LocalDateTime localDateTime) {
try {
ZoneId zoneId = ZoneId.systemDefault();
Instant instant = localDateTime.atZone(zoneId).toInstant();
long toEpochMilli = instant.toEpochMilli();
return DateString.millisecondToStringLong(toEpochMilli);
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
}
**帮助到您请点赞关注收藏谢谢!!**
java 时间转化
猜你喜欢
转载自blog.csdn.net/qq_42496238/article/details/109749058
今日推荐
周排行