package com.qinpoint.utils;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
/**
* @Auther: wt_logo
* @Date: 2019/8/1 21:56
* @Description: 时间操作类
*/
public class DateUtils {
public static Date getDate(Date date){
Date dt = null;
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.set(Calendar.MILLISECOND, 0);
calendar.add(Calendar.DAY_OF_MONTH, 1);
dt = calendar.getTime();
return dt;
}
/**
* 将秒转化为时分秒
* @param date
* @return
*/
public static String getDate(Integer date) {
int h = date/3600;
int m = (date%3600)/60;
int s = (date%3600)%60;
return h+"-"+m+"-"+s;
}
public static String getDateString(Date date){
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String sDate = sdf.format(date);
return sDate;
}
public static String getDateHH(Date date){
SimpleDateFormat sdf = new SimpleDateFormat("HH");
String sDate = sdf.format(date);
return sDate;
}
public static String getDateStrings(Date date){
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String sDate = sdf.format(date);
return sDate;
}
public static long getDateLong(Date date){
long lDate = 0;
Date dt = getDate(date);
lDate = dt.getTime();
return lDate;
}
public static long getDateTimeLong(Date date){
long lDate = 0;
lDate = date.getTime();
return lDate;
}
public static String getString(Date date, String format){
String sDate ="";
SimpleDateFormat sdf = new SimpleDateFormat(format);
sDate = sdf.format(date);
return sDate;
}
public static long getString(String dateTime, String format){
long lDate = 0;
SimpleDateFormat sdf = new SimpleDateFormat(format);
try {
Date date = sdf.parse(dateTime);
lDate = date.getTime();
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return lDate;
}
public static String getString(long tm, String format){
String sDate="";
Date date = DateUtils.putDateTime(tm);
SimpleDateFormat sdf = new SimpleDateFormat(format);
sDate = sdf.format(date);
return sDate;
}
public static Date putDateTime(long time){
Date date = null;
date = new Date(time);
return date;
}
public static Date putDate(long time){
Date date = null;
date = new Date(time);
date = getDate(date);
return date;
}
public static Date putDateTime(String dtString, String format){
Date date = null;
SimpleDateFormat sdf = new SimpleDateFormat(format);
try {
date = sdf.parse(dtString);
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return date;
}
public static Date AddYear(Date date, int y){
Date dt = null;
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.add(Calendar.YEAR, y);
dt = calendar.getTime();
return dt;
}
public static Date AddMonth(Date date, int m){
Date dt = null;
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.add(Calendar.MONTH, m);
dt = calendar.getTime();
return dt;
}
public static Date AddDay(Date date, int d){
Date dt = null;
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.add(Calendar.DAY_OF_MONTH, d);
dt = calendar.getTime();
return dt;
}
public static Date AddHour(Date date, int h){
Date dt = null;
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.add(Calendar.HOUR_OF_DAY, h);
dt = calendar.getTime();
return dt;
}
public static Date AddMinute(Date date, int m){
Date dt = null;
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.add(Calendar.MINUTE, m);
dt = calendar.getTime();
return dt;
}
public static Date AddSecond(Date date, int s){
Date dt = null;
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.add(Calendar.SECOND, s);
dt = calendar.getTime();
return dt;
}
public static Date Add(Date date, int millisecond){
Date dt = null;
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.add(Calendar.MILLISECOND, millisecond);
dt = calendar.getTime();
return dt;
}
public static long Subtrat(Date date1, Date date2){
long l = 0;
l = date1.getTime() - date2.getTime();
return l;
}
/**
* 将字符串转化为时间
* @param source
* @return
*/
public static Date getStringToDate(String source){
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date date = null;
try {
date = sdf.parse(source);
} catch (ParseException e) {
e.printStackTrace();
}
return date;
}
/**
* 获取某天的开始日期
*
* @param offset 0今天,1明天,-1昨天,依次类推
* @return
*/
public static LocalDateTime dayStart(int offset) {
return LocalDate.now().plusDays(offset).atStartOfDay();
}
/**
* 到明天凌晨剩余时间
* @return
*/
public static long isNowToHour(){
Calendar cal = Calendar.getInstance();
cal.set(Calendar.DAY_OF_MONTH, cal.get(Calendar.DAY_OF_MONTH) + 1);
cal.set(Calendar.HOUR_OF_DAY, 0);
cal.set(Calendar.MINUTE, 0);
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.MILLISECOND, 0);
long diff = cal.getTimeInMillis() - System.currentTimeMillis();
return diff;
}
/**
* 返回两个时间之间的日期数据
* @param startTime 开始时间
* @param endTime 结束时间
* @return
*/
public static List<String> getDays(String startTime, String endTime) {
// 返回的日期集合
List<String> days = new ArrayList<String>();
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
try {
Date start = dateFormat.parse(startTime);
Date end = dateFormat.parse(endTime);
Calendar tempStart = Calendar.getInstance();
tempStart.setTime(start);
Calendar tempEnd = Calendar.getInstance();
tempEnd.setTime(end);
//日期加1(包含结束)
tempEnd.add(Calendar.DATE, +1);
while (tempStart.before(tempEnd)) {
days.add(dateFormat.format(tempStart.getTime()));
tempStart.add(Calendar.DAY_OF_YEAR, 1);
}
} catch (ParseException e) {
e.printStackTrace();
}
return days;
}
}