Files
lottery/apps/lotteryOpen/src/main/java/javautils/date/DateUtil.java
T
feng0207 3fc4dcc777 initial commit: lottery 项目集(三工程统一管理)
- apps/lotteryServer, lotteryCapture, lotteryOpen 三个业务工程
- 忽略 archive/, tools/, infra/data/ 大目录与敏感配置文件
- 移除 lotteryServer 原嵌套 git,并入顶层统一管理
2026-09-17 19:03:32 +08:00

421 lines
9.9 KiB
Java

package javautils.date;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
public class DateUtil {
/**
* 获取当前时间
* @return
*/
public static String getCurrentTime() {
GregorianCalendar g = new GregorianCalendar();
return dateToString(g);
}
/**
* 获取当前日期
* @return
*/
public static String getCurrentDate() {
GregorianCalendar g = new GregorianCalendar();
return dateToStringSim(g);
}
/**
* 获取昨天日期
* @return
*/
public static String getYesterday() {
GregorianCalendar g = new GregorianCalendar();
g.set(Calendar.DATE, g.get(Calendar.DATE) - 1);
return dateToStringSim(g);
}
/**
* 获取明天日期
* @return
*/
public static String getTomorrow() {
GregorianCalendar g = new GregorianCalendar();
g.set(Calendar.DATE, g.get(Calendar.DATE) + 1);
return dateToStringSim(g);
}
/**
* 转换成时间
* @param ms
* @return
*/
public static String getTime(long ms) {
GregorianCalendar g = new GregorianCalendar();
g.setTimeInMillis(ms);
return dateToString(g);
}
/**
* 根据时间获取GregorianCalendar
* @param time
* @return
*/
private static GregorianCalendar getCalendarByTime(String time, String format) {
GregorianCalendar g = new GregorianCalendar();
try {
g.setTime(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(time));
} catch (ParseException e) {
g = null;
}
return g;
}
/**
* 计算时间
* @param g
* @param seconds
* @return
*/
private static String calcDate(GregorianCalendar g, int seconds) {
if(g == null) {
g = new GregorianCalendar();
}
g.add(Calendar.SECOND, seconds);
return dateToString(g);
}
/**
* 日期转字符串
* @param date
* @return
*/
public static String dateToString(Date date) {
try {
DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
String s = formatter.format(date);
return s;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
/**
* 字符串转日期
* @param date
* @return
*/
public static Date stringToDate(String date) {
try {
DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
Date d = (Date) formatter.parse(date);
return d;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
/**
* 字符串转日期, 自定义格式
* @param date
* @param format
* @return
*/
public static Date stringToDate(String date, String format) {
try {
DateFormat formatter = new SimpleDateFormat(format);
Date d = (Date) formatter.parse(date);
return d;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
/**
* 获取日期相差毫秒数
* @param subDate
* @param minDate
* @return
*/
public static long calcDate(String subDate, String minDate) {
long lSubDate = getCalendarByTime(subDate, "yyyy-MM-dd HH:mm:ss").getTimeInMillis();
long lMinDate = getCalendarByTime(minDate, "yyyy-MM-dd HH:mm:ss").getTimeInMillis();
return (lSubDate - lMinDate);
}
/**
* 根据日期计算相差天数,忽略时分秒
* @param date1
* @param date2
* @return
*/
public static int calcDays(Date date1, Date date2) {
Calendar date1Calendar = Calendar.getInstance();
date1Calendar.setTime(date1);
Calendar date2Calendar = Calendar.getInstance();
date2Calendar.setTime(date2);
int day1 = date1Calendar.get(Calendar.DAY_OF_YEAR);
int day2 = date2Calendar.get(Calendar.DAY_OF_YEAR);
return day1 - day2;
}
/**
* 根据差值计算出新的时间
* @param time
* @param seconds
* @return
*/
public static String calcDateByTime(String time, int seconds) {
GregorianCalendar g = getCalendarByTime(time, "yyyy-MM-dd HH:mm:ss");
return calcDate(g, seconds);
}
/**
* 根据天数计算出新的日期
* @param date
* @param days
* @return
*/
public static String calcNewDay(String date, int days) {
GregorianCalendar g = new GregorianCalendar();
g.setTimeInMillis(formatTime(date, "yyyy-MM-dd"));
g.set(Calendar.DATE, g.get(Calendar.DATE) + days);
return dateToStringSim(g);
}
/**
* 下一天
* @param date
* @return
*/
public static String calcNextDay(String date) {
GregorianCalendar g = new GregorianCalendar();
g.setTimeInMillis(formatTime(date, "yyyy-MM-dd"));
g.set(Calendar.DATE, g.get(Calendar.DATE) + 1);
return dateToStringSim(g);
}
/**
* 上一天
* @param date
* @return
*/
public static String calcLastDay(String date) {
GregorianCalendar g = new GregorianCalendar();
g.setTimeInMillis(formatTime(date, "yyyy-MM-dd"));
g.set(Calendar.DATE, g.get(Calendar.DATE) - 1);
return dateToStringSim(g);
}
private static Calendar getDateOfMonth(Calendar date, int num, boolean flag) {
Calendar lastDate = (Calendar) date.clone();
if(flag) {
lastDate.add(Calendar.MONTH, num);
}else {
lastDate.add(Calendar.MONTH, -num);
}
return lastDate;
}
private static Calendar getDateOfLastMonth(String dateStr, int num, boolean flag) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
try {
Date date = sdf.parse(dateStr);
Calendar c = Calendar.getInstance();
c.setTime(date);
return getDateOfMonth(c, num, flag);
} catch (Exception e) {
throw new IllegalArgumentException(
"Invalid date format(yyyyMMdd): " + dateStr);
}
}
/**
* 获取上个月的同一天
* @param date
* @param num
* @param flag
* @return
*/
public static String getSameDateOfLastMonth(String date, int num, boolean flag) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String lastDate = sdf.format(getDateOfLastMonth(date, num, flag).getTime());
return lastDate;
}
/**
* GregorianCalendar转成字符串
* @param g
* @return
*/
private static String dateToString(GregorianCalendar g) {
String year = String.valueOf(g.get(Calendar.YEAR));
String month = String.format("%02d", g.get(Calendar.MONTH) + 1);
String day =String.format("%02d", g.get(Calendar.DAY_OF_MONTH));
String hours = String.format("%02d", g.get(Calendar.HOUR_OF_DAY));
String minutes = String.format("%02d", g.get(Calendar.MINUTE));
String seconds = String.format("%02d", g.get(Calendar.SECOND));
return year + "-" + month + "-" + day + " " + hours + ":" + minutes + ":" + seconds;
}
/**
* 根据时间转成MS
* @param time
* @param format
* @return
*/
public static long stringToLong(String time, String format) {
return stringToDate(time, format).getTime();
}
/**
* GregorianCalendar转成日期格式
* @param g
* @return
*/
public static String dateToStringSim(GregorianCalendar g) {
String year = String.valueOf(g.get(Calendar.YEAR));
String month = String.format("%02d", g.get(Calendar.MONTH) + 1);
String day = String.format("%02d", g.get(Calendar.DAY_OF_MONTH));
return year + "-" + month + "-" + day;
}
/**
* 获取当前时间
* @return
*/
public static String getCurTimeStr() {
GregorianCalendar g = new GregorianCalendar();
String year = String.valueOf(g.get(Calendar.YEAR));
String month = String.format("%02d", g.get(Calendar.MONTH) + 1);
String day = String.format("%02d", g.get(Calendar.DAY_OF_MONTH));
String hours = String.format("%02d", g.get(Calendar.HOUR_OF_DAY));
String minutes = String.format("%02d", g.get(Calendar.MINUTE));
String seconds = String.format("%02d", g.get(Calendar.SECOND));
return year + month + day + hours + minutes + seconds;
}
/**
* 格式化时间
* @param time
* @param oldFormat
* @param newFormat
* @return
*/
public static String formatTime(String time, String oldFormat,
String newFormat) {
return new SimpleDateFormat(newFormat).format(stringToDate(time,
oldFormat));
}
/**
* 格式化日期
* @param date
* @param format
* @return
*/
public static String formatTime(Date date, String format) {
return new SimpleDateFormat(format).format(date);
}
/**
* 格式化时间
* @param time
* @param format
* @return
*/
public static String formatTime(long time, String format) {
return formatTime(getTime(time), "yyyy-MM-dd HH:mm:ss", format);
}
/**
* 获取时间, 根据格式化参数
* @param time
* @param format
* @return
*/
public static long formatTime(String time, String format) {
return stringToDate(time, format).getTime();
}
public static String dateForm(String date, String config) {
if ("MM/dd/yyyy".equals(config)) {
String[] dateStrs = date.split("/");
return dateStrs[2] + "-" + dateStrs[0] + "-" + dateStrs[1];
}
if ("MM-dd-yyyy".equals(config)) {
String[] dateStrs = date.split("-");
return dateStrs[2] + "-" + dateStrs[0] + "-" + dateStrs[1];
}
return null;
}
public static int getYear(String time) {
return Integer.parseInt(time.substring(0, 4));
}
public static int getMonth(String time) {
return Integer.parseInt(time.substring(5, 7));
}
public static int getDay(String time) {
return Integer.parseInt(time.substring(8, 10));
}
public static int getHours(String time) {
return Integer.parseInt(time.substring(11, 13));
}
public static int getMinutes(String time) {
return Integer.parseInt(time.substring(14, 16));
}
public static int getSeconds(String time) {
return Integer.parseInt(time.substring(17));
}
public static int getYear() {
GregorianCalendar g = new GregorianCalendar();
return g.get(Calendar.YEAR);
}
public static int getMonth() {
GregorianCalendar g = new GregorianCalendar();
return g.get(Calendar.MONTH) + 1;
}
public static int getDay() {
GregorianCalendar g = new GregorianCalendar();
return g.get(Calendar.DAY_OF_MONTH);
}
public static int getHours() {
GregorianCalendar g = new GregorianCalendar();
return g.get(Calendar.HOUR_OF_DAY);
}
public static int getMinutes() {
GregorianCalendar g = new GregorianCalendar();
return g.get(Calendar.MINUTE);
}
public static int getSeconds() {
GregorianCalendar g = new GregorianCalendar();
return g.get(Calendar.SECOND);
}
public static void main(String[] args) {
}
}