说明
项目中使用的 日期类型是 java.util.Date
MySQL中的日期类型是 datetime
数据表映射对象也用的 java.util.Date
个人总结的FormatUtils
包含下面几个
- 字符串类型的(年月日时分秒) 转成 Date类型
- 将当前Date类型按照指定格式转成 String类型的
- 将String类型的日期格式转成毫秒值
- 将毫秒值转成 String类型的日期格式
- 计算两个日期间隔的小时数
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
/**
* @Author: LiangJingXing
* @Date: 2019/6/10 14:29
* @Description: 日期格式转换工具类
* SimpleDateFormat 线程不安全
*/
public class FormatUtils {
/**
* 字符串类型转 Date
* @param stringDate
* @return
*/
public static Date StringFormatDate(String stringDate){
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = null;
try {
date = simpleDateFormat.parse(stringDate);
} catch (ParseException e) {
e.printStackTrace();
}
return date;
}
/**
* 将当前日期类型 转换成String
* @return
*/
public static String DateToString(Date date){
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH");
String format = simpleDateFormat.format(date);
return format;
}
/**
* 将时间格式 yyyy-MM-dd HH:mm:ss String的表现形式转成毫秒
* @param timeStr
* @return
* @throws ParseException
*/
public static Long stringFormatCurrentMillis(String timeStr) throws ParseException {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH");
Date date = simpleDateFormat.parse(timeStr);
long ts = date.getTime();
return ts;
}
/**
* 将 毫秒值 转成 时间格式的字符传
* @param timeMillis
* @return
*/
public static String currentMillisToDateString(Long timeMillis){
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(timeMillis);
// 年
int year = calendar.get(Calendar.YEAR);
// 月
int month = calendar.get(Calendar.MONTH) + 1 ;
String monthStr = addZero(month);
// 日
int day = calendar.get(Calendar.DAY_OF_MONTH);
String dayStr = addZero(day);
// 24小时制
int hour = calendar.get(Calendar.HOUR_OF_DAY);
String hourStr = addZero(hour);
// 分
int minute = calendar.get(Calendar.MINUTE);
String minuteStr = addZero(minute);
// 秒
int second = calendar.get(Calendar.SECOND);
String secondStr =addZero(second);
return(year + "-" + monthStr + "-" + dayStr + " "
+ hourStr + ":" + minuteStr + ":" + secondStr);
}
/**
* 不满2位数 用0补齐
* @param param
* @return
*/
private static String addZero(int param) {
String paramStr = param < 10 ? "0"+param : "" + param ;
return paramStr;
}
/**
* 计算2个日期间隔 小时数
* @param date1
* @param date2
* @return
* @throws ParseException
*/
public static Long calcDaysBetweenForHours(Date date1, Date date2) throws ParseException {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH");
date1 = simpleDateFormat.parse(simpleDateFormat.format(date1));
date2 = simpleDateFormat.parse(simpleDateFormat.format(date2));
Calendar calendar = Calendar.getInstance();
calendar.setTime(date1);
long timeInMillis1 = calendar.getTimeInMillis();
calendar.setTime(date2);
long timeInMillis2 = calendar.getTimeInMillis();
long hours = (timeInMillis2 - timeInMillis1) /(1000 * 60 * 60);
return hours;
}
/**
* 在同一小时 true 不在同一小时 false
* @param date1
* @param pushTime
* @return
* @throws ParseException
*/
public static Boolean calcIsAlreadyPush(Date date1, Date pushTime) throws ParseException{
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH");
date1 = simpleDateFormat.parse(simpleDateFormat.format(date1));
pushTime = simpleDateFormat.parse(simpleDateFormat.format(pushTime));
Calendar calendar = Calendar.getInstance();
calendar.setTime(date1);
long timeInMillis1 = calendar.getTimeInMillis();
calendar.setTime(pushTime);
long pushTimeMillis = calendar.getTimeInMillis();
if (timeInMillis1 - pushTimeMillis == 0){
return true;
}
return false;
}
}