- apps/lotteryServer, lotteryCapture, lotteryOpen 三个业务工程 - 忽略 archive/, tools/, infra/data/ 大目录与敏感配置文件 - 移除 lotteryServer 原嵌套 git,并入顶层统一管理
421 lines
9.9 KiB
Java
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) {
|
|
|
|
}
|
|
|
|
} |