import lombok.extern.slf4j.Slf4j;
import java.sql.Timestamp;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Locale;
import java.util.TimeZone;
/**
* @Author: Judge
* @Date: 2019/6/17 15:49
*/
@Slf4j
public class DateUtils {
/**
* 时间格式(yyyy-MM-dd)
*/
public final static String DATE_PATTERN = "yyyy-MM-dd";
/**
* 时间格式(yyyy-MM-dd HH:mm:ss)
*/
public final static String DATE_TIME_PATTERN = "yyyy-MM-dd HH:mm:ss";
public static String format(Date date) {
return format(date, DATE_PATTERN);
}
public static String format(Date date, String pattern) {
if (date != null) {
SimpleDateFormat df = new SimpleDateFormat(pattern);
return df.format(date);
}
return null;
}
/**
* 10位时间戳转换
*
* @param time
* @param pattern
* @return
*/
public static String format(Long time, String pattern) {
if (time != null) {
Date date = new Date(time * 1000);
SimpleDateFormat df = new SimpleDateFormat(pattern);
return df.format(date);
}
return null;
}
/**
* @return
*/
public static Long GetThisSundaySeconds() {
Calendar calendar1 = Calendar.getInstance();
calendar1.setFirstDayOfWeek(Calendar.MONDAY);
calendar1.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY);
//calendar1.add(Calendar.WEEK_OF_YEAR,1);
calendar1.set(Calendar.HOUR_OF_DAY, 23);
calendar1.set(Calendar.MINUTE, 59);
calendar1.set(Calendar.SECOND, 59);
return calendar1.getTimeInMillis() / 1000;
}
public static Long GetNextMonthSeconds() {
Calendar calendar1 = Calendar.getInstance();
calendar1.set(Calendar.MONTH, calendar1.get(Calendar.MONTH) + 1);
calendar1.set(Calendar.DAY_OF_MONTH, 1);
calendar1.set(Calendar.HOUR_OF_DAY, 0);
calendar1.set(Calendar.MINUTE, 0);
calendar1.set(Calendar.SECOND, 0);
return calendar1.getTimeInMillis() / 1000;
}
/**
* 10位时间戳转Date
*
* @param time
* @return
*/
public static Date TimestampToDate(Integer time) {
long temp = (long) time * 1000;
Timestamp ts = new Timestamp(temp);
Date date = new Date();
try {
date = ts;
//System.out.println(date);
} catch (Exception e) {
e.printStackTrace();
}
return date;
}
/**
* 获取当天凌晨时间
*
* @return
*/
public static Date getTodayStartTime() {
Calendar todayStart = Calendar.getInstance();
todayStart.set(Calendar.HOUR_OF_DAY, 0);
todayStart.set(Calendar.MINUTE, 0);
todayStart.set(Calendar.SECOND, 0);
todayStart.set(Calendar.MILLISECOND, 0);
return todayStart.getTime();
}
/**
* 获取当天晚上结束时间
*
* @return
*/
public static Date getTodayEndTime() {
Calendar todayEnd = Calendar.getInstance();
todayEnd.set(Calendar.HOUR_OF_DAY, 23);
todayEnd.set(Calendar.MINUTE, 59);
todayEnd.set(Calendar.SECOND, 59);
todayEnd.set(Calendar.MILLISECOND, 999);
return todayEnd.getTime();
}
/**
* 判断是否为新用户
*
* @param createTime
* @return
*/
public static Boolean isNewUser(Long createTime) {
return createTime >= 1552233600;
}
/**
* 取得本周
* update by vincent 2019-08-29 废弃
*/
public static Integer getThisWeek_bak() {
Calendar calendar = Calendar.getInstance();
int yw = calendar.get(Calendar.YEAR) * 100 + (calendar.get(Calendar.WEEK_OF_YEAR));
switch (yw) {
case 201901:
yw = 201801;
break;
default:
break;
}
return yw;
}
/**
* 取得本周
* 获取年末周的BUG优化
*/
public static Integer getThisWeek() {
Calendar calendar = Calendar.getInstance();
calendar.setFirstDayOfWeek(Calendar.MONDAY);
if (calendar.get(Calendar.MONTH) == 11) {
calendar.set(Calendar.WEEK_OF_YEAR, 1);
calendar.set(Calendar.YEAR, calendar.get(Calendar.YEAR) + 1);
}
int yw = calendar.get(Calendar.YEAR) * 100 + (calendar.get(Calendar.WEEK_OF_YEAR));
return yw;
}
/**
* 取得上周
*
* @return update by vincent 2019-08-29
*/
public static Integer getLastWeek() {
Calendar calendar = Calendar.getInstance();
calendar.setFirstDayOfWeek(Calendar.MONDAY);
// int yearWeek = calendar.get(Calendar.YEAR) * 100 + (calendar.get(Calendar.WEEK_OF_YEAR) - 1);
// switch (yearWeek){
// case 201800:
// case 201900:
// yearWeek = 201852;break;
// case 201901:yearWeek = 201801;
// break;
// default:break;
// }
//取得上周
Long lastDateS = calendar.getTimeInMillis() - (7 * 86400000);
calendar.setTime(new Date(lastDateS));
int yearWeek = calendar.get(Calendar.YEAR) * 100 + (calendar.get(Calendar.WEEK_OF_YEAR));
return yearWeek;
}
/**
* 取得上个月的 年月
*
* @return
*/
public static Integer getLastMonth() {
Calendar cal = Calendar.getInstance();
int yearMonth = cal.get(Calendar.YEAR) * 100 + cal.get(Calendar.MONTH);
return yearMonth;
}
/**
* 获取这个月的年月
*
* @return
*/
public static Integer getThisMonth() {
Calendar cal = Calendar.getInstance();
int yearMonth = cal.get(Calendar.YEAR) * 100 + cal.get(Calendar.MONTH) + 1;
return yearMonth;
}
/**
* 判断当前时间是否在活动期间
*
* @return
*/
public static Integer taskDouble() {
Integer formatInt = ToDayInteger();
if (formatInt >= 20191001 && formatInt <= 20191007) {
return 2;
}
return 1;
}
public static Integer taskDouble(Integer day) {
if (day >= 20190501 && day <= 20190503) return 2;
return 1;
}
public static boolean isWeekend() {
Calendar cal = Calendar.getInstance();
if (cal.get(Calendar.DAY_OF_WEEK) == Calendar.SATURDAY || cal.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY) {
return true;
} else {
return false;
}
}
/**
* 获取今天零点的时间戳
*
* @return
*/
public static Long getToDayStartTimestamp() {
Calendar calendar = Calendar.getInstance();
Date date = calendar.getTime();
Long time = date.getTime() / 1000;
long zero = time - (time + 8 * 3600) % 86400;
return zero;
}
/**
* 获取今天23:59:59的时间戳
*
* @return
*/
public static Long getToDayEndTimestamp() {
Calendar calendar = Calendar.getInstance();
calendar.set(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH), 23, 59, 59);
return calendar.getTime().getTime() / 1000;
}
/**
* 将当天时间转为Integer,格式(Ymd)
*
* @return
*/
public static Integer ToDayInteger() {
String formatStr = format(new Date(), DATE_PATTERN);
return Integer.parseInt(formatStr.replace("-", ""));
}
/**
* 获取这周日的时间
*
* @param format
* @return
*/
public static String getThisSunday(String format) {
Calendar calendar = Calendar.getInstance(Locale.CHINA);
calendar.setFirstDayOfWeek(Calendar.MONDAY);
calendar.set(Calendar.DAY_OF_WEEK, 1);
calendar.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY);
//calendar.add(Calendar.WEEK_OF_YEAR,1);
return format(calendar.getTime(), format);
}
/**
* 获取本周一的时间
*
* @return
*/
public static String getThisMondy(String format) {
Calendar calendar = Calendar.getInstance(Locale.CHINA);
calendar.setFirstDayOfWeek(Calendar.MONDAY);
calendar.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
// calendar.add(Calendar.WEEK_OF_YEAR,-1);
return format(calendar.getTime(), format);
}
/**
* 获取上周日的时间 按照中国人的理解就是上周日 中国人一周从周一开始
*
* @param format
* @return
*/
public static String getLastSunday(String format) {
Calendar calendar = Calendar.getInstance(Locale.CHINA);
calendar.setFirstDayOfWeek(Calendar.MONDAY);
calendar.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY);
calendar.add(Calendar.WEEK_OF_YEAR, -1);
return format(calendar.getTime(), format);
}
/**
* 获取上周一的时间
*
* @return
*/
public static String getLastMondy(String format) {
Calendar calendar = Calendar.getInstance(Locale.CHINA);
calendar.setFirstDayOfWeek(Calendar.MONDAY);
calendar.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
calendar.add(Calendar.WEEK_OF_YEAR, -1);
return format(calendar.getTime(), format);
}
//获取本周是今年的第几周,格式year + week
public static Integer getWeek() {
Calendar c = Calendar.getInstance();
c.setFirstDayOfWeek(Calendar.MONDAY);
int w = c.get(Calendar.WEEK_OF_YEAR);
int y = c.get(Calendar.YEAR);
return Integer.parseInt(y + "" + w);
}
/**
* 获取本周开始时间戳
*
* @return
*/
public static Long getWeekStart() {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Calendar ca = Calendar.getInstance();
ca.setFirstDayOfWeek(Calendar.MONDAY);
ca.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
ca.set(Calendar.HOUR_OF_DAY, 0);
ca.set(Calendar.MINUTE, 0);
ca.set(Calendar.SECOND, 0);
String start = sdf.format(ca.getTime());
Date date = new Date();
try {
date = sdf.parse(start);
} catch (ParseException e) {
e.printStackTrace();
}
return date.getTime() / 1000;
}
/**
* 获取本周结束时间戳
*
* @return
*/
public static Long getWeekEnd() {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Calendar ca = Calendar.getInstance();
ca.setFirstDayOfWeek(Calendar.MONDAY);
ca.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY);
ca.set(ca.get(Calendar.YEAR), ca.get(Calendar.MONTH), ca.get(Calendar.DATE), 23, 59, 59);
String end = sdf.format(ca.getTime());
Date date = new Date();
try {
date = sdf.parse(end);
} catch (ParseException e) {
e.printStackTrace();
}
return date.getTime() / 1000;
}
/**
* 获取几天前0点时间戳,单位:秒
*
* @return
*/
public static Long getFewDays(Integer fewDays) {
Calendar calendar = Calendar.getInstance();
calendar.setFirstDayOfWeek(Calendar.MONDAY);
calendar.add(Calendar.DAY_OF_YEAR, -fewDays);
calendar.set(Calendar.HOUR_OF_DAY, 0);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
return calendar.getTime().getTime() / 1000;
}
/**
* 获取当前时间戳
*
* @return
*/
public static Long getNow() {
Long time = System.currentTimeMillis() / 1000;
return time;
}
/**
* 获取月榜第几期
*
* @return
*/
public static Integer getMonthRankNum() {
Calendar calendar = Calendar.getInstance();
int y = calendar.get(Calendar.YEAR);
int m = calendar.get(Calendar.MONTH);
return (y - 2019) * 12 + (m + 2);
}
//获取昨天当前时间
public static Integer getYesterdayNow() {
Calendar calendar = Calendar.getInstance(); //当前时间
calendar.add(Calendar.DAY_OF_YEAR, -1);
Long dd = calendar.getTime().getTime() / 1000;
return dd.intValue();
}
//获取系统当前时间,字符串类型
public static String getStrDate() {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//设置为东八区
sdf.setTimeZone(TimeZone.getTimeZone("Asia/Shanghai"));
Date newDate = new Date();
String dateStr = sdf.format(newDate);
return dateStr;
}
//获取系统当前时间Date类型,需要将字符串类型转成时间
public static Date getDaDate() {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//设置为东八区
sdf.setTimeZone(TimeZone.getTimeZone("Asia/Shanghai"));
Date date = new Date();
String dateStr = sdf.format(date);
//将字符串转成时间
DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date newDate = null;
try {
newDate = df.parse(dateStr);
} catch (ParseException e) {
e.printStackTrace();
}
return newDate;
}
/**
* *
* @return
*/
public static boolean isActivityPeriod() {
Integer toDay = ToDayInteger();
if (toDay.equals(20191001) || toDay.equals(20191003) || toDay.equals(20191005) || toDay.equals(20191007)) {
return true;
}
return false;
}
/**
*
*
* @return
*/
public static boolean isActivityLuckyTurntable() {
Integer toDay = ToDayInteger();
if (toDay.equals(20191002) || toDay.equals(20191004) || toDay.equals(20191006)) {
return true;
}
return false;
}
/**
* 失效时间距离下月的时间秒数
*
* @return
*/
public static Long getNextMonthExpireTime() {
return DateUtils.GetThisSundaySeconds() - System.currentTimeMillis() / 1000;
}
/**
* 失效时间距离下周的时间秒数
*
* @return
*/
public static Long getNextWeekExpireTime() {
//失效时间距离下周的时间秒数
return DateUtils.GetNextMonthSeconds() - System.currentTimeMillis() / 1000;
}
public static void main(String[] args) throws InterruptedException {
/* Calendar calendar = Calendar.getInstance();
calendar.set(calendar.get(Calendar.YEAR),calendar.get(Calendar.MONTH),calendar.get(Calendar.DAY_OF_MONTH),00,00,00);
long time = calendar.getTime().getTime() / 1000;
System.out.println(time);*/
/* System.out.println(getLastMonth());
System.out.println(DateUtils.GetThisSundaySeconds() - System.currentTimeMillis() / 1000);
System.out.println(DateUtils.getThisMondy("M月d日") + "-" + DateUtils.getThisSunday("M月d日"));*/
/*System.out.println(DateUtils.GetThisSundaySeconds() - System.currentTimeMillis() / 1000);
System.out.println(DateUtils.getThisMondy("M月d日") + "-" + DateUtils.getThisSunday("M月d日"));
System.out.println(DateUtils.getLastMondy("M月d日") + "-" + DateUtils.getLastSunday("M月d日"));*/
/*Calendar calendar = Calendar.getInstance(); //当前时间
calendar.setFirstDayOfWeek(Calendar.MONDAY);
calendar.add(Calendar.DAY_OF_YEAR, -6);
calendar.set(Calendar.HOUR_OF_DAY, 0);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);*/
System.out.println(getFewDays(7));
}
}
DateUtil
最新推荐文章于 2025-03-10 18:14:24 发布