- 秒 --> 时分秒
public static String secToTime(int seconds){
int hour = seconds / 3600;
int minute = (seconds - hour * 3600)/60;
int seconds = (seconds - hour * 3600 - minute * 60);
StringBuffer sb = new StringBuffer();
if(hour > 0){
sb.append(hour + 小时);
}
if(minute > 0){
sb.append(minute + 分);
}
if(seconds > 0){
sb.append(seconds + 秒);
}
if(seconds == 0){
sb.append(< 1秒);
}
return sb.toString();
}
- String + 日期格式 --> Date
public static Date getDateFromString(String day, String pattern){
try{
LocalDateTime localDateTime = LocalDateTime.parse(day, DateTimeFormatter.ofPattern(pattern));
long milli = localDateTime.atZone(ZoneId.systemDefault()).toInstant().toEpochMilli();
return new Date(milli);
} catch (Excetpione e){
return null;
}
}
- String --> Date1
public static Date strToDate(String dateTime) throws ParseException {
return (new SimpleDateFormat(yyyy-MM-dd HH:mm:ss)).parse(dateTime);
}
- String --> Date2
public static Date str2Date(String dateTime) {
try {
return (new SimpleDateFormat(yyyy-MM-dd)).parse(dateTime);
} catch (Exception e) {
return null;
}
}
- String --> Date3
public static Date str2Date2(String dateTime) throws ParseException {
return (new SimpleDateFormat(yyyyMMdd)).parse(dateTime);
}
- 时间格式规整1
public static String formatDate(Date date) {
SimpleDateFormat sdf = new SimpleDateFormat(yyyy-MM-dd HH:mm:ss);
return sdf.format(date);
}
- 时间格式规整2
public static String formatDate2(Date date) {
SimpleDateFormat sdf = new SimpleDateFormat(yyyy-MM-dd);
return sdf.format(date);
}
- 时间格式规整3
public static String formatDate3(Date date) {
SimpleDateFormat sdf = new SimpleDateFormat(yyyy/MM/dd);
return sdf.format(date);
}
- 时间格式规整4
public static String formatDate4(Date date) {
SimpleDateFormat sdf = new SimpleDateFormat(yyyyMMdd);
return sdf.format(date);
}
- 在指定date + hours(hours可为负)
public static Date addDateHours(Date date, int hours) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.add(Calendar.HOUR_OF_DAY, hours);
return calendar.getTime();
}
- 在指定date + days(days可为负)
public static Date addDateDays(Date date, int days) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.add(Calendar.DATE, days);
return calendar.getTime();
}
- Date相减差算天数
public static long getDaySub(Date beginDate, Date endDate) {
long day = (endDate.getTime() - beginDate.getTime()) / (24 * 60 * 60 * 1000);
return day;
}
- Date --> LocalDate
public static LocalDate toLocalDate(Date date) {
if (null == date) {
return null;
}
return new java.sql.Date(date.getTime()).toLocalDate();
}
- LocalDate --> Date
public static Date toDate(LocalDate localDate) {
return java.sql.Date.valueOf(localDate);
}
- Date相减算时间差(返回String)
public static String calculateDuration(Date from, Date to) {
if (from == null || to == null || from.after(to)) {
return ;
}
long diffSec = (to.getTime() - from.getTime()) / 1000;
return convertToDuration(diffSec);
}
- 时间差转化成天小时分钟
public static String convertToDuration(Long diffSec) {
if (diffSec == null || diffSec < 0) {
return ;
}
long nd = 24 * 60 * 60;
long nh = 60 * 60;
long nm = 60;
long day = diffSec / nd;
long hour = diffSec % nd / nh;
long min = diffSec % nd % nh / nm;
StringBuffer sb = new StringBuffer();
if (day > 0) {
sb.append(day + 天);
}
if (hour > 0) {
sb.append(hour + 小时);
}
if (min > 0) {
sb.append(min + 分钟);
}
return sb.length() != 0 ? sb.toString() : 1分钟内;
}
- 当前时间是周几
public static int getDayOfWeek(Date date) {
Calendar cal = Calendar.getInstance();
cal.setTime(date);
return cal.get(Calendar.DAY_OF_WEEK) - 1 != 0 ? cal.get(Calendar.DAY_OF_WEEK) - 1 : 7;
}
- 当前时间是周几
public static int getDayOfWeek() {
Calendar cal = Calendar.getInstance();
return cal.get(Calendar.DAY_OF_WEEK) - 1 != 0 ? cal.get(Calendar.DAY_OF_WEEK) - 1 : 7;
}
- Date --> 对应Date的最早时间
public static Date getStartTime(Date date) {
Calendar c1 = Calendar.getInstance();
c1.setTime(date);
c1.set(Calendar.HOUR_OF_DAY, 0);
c1.set(Calendar.MINUTE, 0);
c1.set(Calendar.SECOND, 0);
return c1.getTime();
}
- Date --> 对应Date的最晚时间
public static Date getEndTime(Date date) {
Calendar c1 = Calendar.getInstance();
c1.setTime(date);
c1.set(Calendar.HOUR_OF_DAY, 23);
c1.set(Calendar.MINUTE, 59);
c1.set(Calendar.SECOND, 59);
return c1.getTime();
}
- 给一个Date加上几天
public static Date addDay(int count, Date date) {
Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.add(Calendar.DAY_OF_YEAR, count);
return cal.getTime();
}
- 加上几分钟
public static Date addMinutes(int count) {
Calendar cal = Calendar.getInstance();
cal.add(Calendar.MINUTE, count);
return cal.getTime();
}
- 加上几秒
public static Date addSeconds(int count) {
Calendar cal = Calendar.getInstance();
cal.add(Calendar.SECOND, count);
return cal.getTime();
}
- Date --> 获取相差几年的时间,并且分秒都是0
public static Date addYearWithZeroClock(Date date, int number) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.set(Calendar.HOUR_OF_DAY, 0);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
calendar.add(Calendar.YEAR, number);
return calendar.getTime();
}
- double型utc时间戳 --> yyMMddHHmmssSSSSSS 的long型时间戳
private static FastDateFormat fastDateFormat = FastDateFormat.getInstance(yyMMddHHmmssSSS);
public static final String SPLIT_POINT = .;
public static long utcToHumanIdentifiable(double val) {
BigDecimal bigDecimal = new BigDecimal(val * 1000, MathContext.DECIMAL64);
long longValue = bigDecimal.longValue();
StringBuilder microseconds = new StringBuilder(bigDecimal.toString());
if (!microseconds.toString().contains(AnalysisLayerDataConstants.SPLIT_POINT)) {
microseconds = new StringBuilder(000);
} else {
microseconds = new StringBuilder(microseconds.substring(microseconds.indexOf(.) + 1));
for (; microseconds.length() < 3; ) {
microseconds.append(0);
}
}
return Long.parseLong(fastDateFormat.format(new Date(longValue)) + microseconds.substring(0, 3));
}
- 根据时间和时间格式,校验Date是否正确
public static boolean isLegalDate(String sDate, String format) {
if (sDate == null) {
return false;
}
DateFormat formatter = new SimpleDateFormat(format);
try {
Date date = formatter.parse(sDate);
return sDate.equals(formatter.format(date));
} catch (Exception e) {
return false;
}
}
- Date1、Date2 --> 两个date相差多少小时(向上取整)
public static int diffHours(Date date1, Date date2) {
if (date1 == null || date2 == null) {
return 0;
}
long diffMillis = Math.abs(date1.getTime() - date2.getTime());
double diff = Math.min(Integer.MAX_VALUE, Math.ceil(((double)diffMillis) / (1000 * 60 * 60)));
return (int)diff;
}
- Date --> Date和当前时间相差多少小时(向上取整)
public static int diffHoursFromNow(Date date) {
if (date == null) {
return 0;
}
long diffMillis = Math.abs(System.currentTimeMillis() - date.getTime());
double diff = Math.min(Integer.MAX_VALUE, Math.ceil(((double)diffMillis) / (1000 * 60 * 60)));
return (int)diff;
}
