目录
获取当前日期,包含时分秒(yyyy-MM-dd HH:mm:ss);
得到两个时间差 格式yyyy-MM-dd HH:mm:ss;
转化long值的日期时间戳为yyyy-MM-dd HH:mm:ss.SSS格式的日期;
获取最近七天 2019-08-20(有时候用于查最近七天数据起始时间);
获取最近一个月 2019-07-20 (有时候用于查最近一个月数据起始时间);
获取最近三个月 2019-05-20 (有时候用于查最近三个月数据起始时间);
获取最近一年 2018-08-20 (有时候用于查最近一年数据起始时间);
获取今年月份数据list(比如当前月为8月,返回list中包含8个数据1-8);
获取今年季度数据list(比如当前月为8月,为一年中第三个季度,返回list中包含3个数据1-3);
1、String与Date(Java.util.Date)的转换
一 获取时间
获取当前时间时间戳(long);
/**
* 获得当前日期 yyyy-MM-dd HH:mm:ss
*
* @return 2019-08-27 14:12:40
*/
public static String getCurrentTime() {
// 小写的hh取得12小时,大写的HH取的是24小时
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = new Date();
return df.format(date);
}
获取当前日期,包含时分秒(yyyy-MM-dd HH:mm:ss);
/**
* 获取系统当前时间戳
*
* @return 1566889186583
*/
public static String getSystemTime() {
String current = String.valueOf(System.currentTimeMillis());
return current;
}
获取当前日期,不包含时分秒(yyyy-MM-dd);
/**
* 获取当前日期 yy-MM-dd
*
* @return 2019-08-27
*/
public static String getDateByString() {
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
return sdf.format(date);
}
得到两个时间差 格式yyyy-MM-dd HH:mm:ss;
/**
* 得到两个时间差 格式yyyy-MM-dd HH:mm:ss
*
* @param start 2019-06-27 14:12:40
* @param end 2019-08-27 14:12:40
* @return 5270400000
*/
public static long dateSubtraction(String start, String end) {
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
try {
Date date1 = df.parse(start);
Date date2 = df.parse(end);
return date2.getTime() - date1.getTime();
} catch (ParseException e) {
e.printStackTrace();
return 0;
}
}
转化long值的日期时间戳为yyyy-MM-dd HH:mm:ss.SSS格式的日期;
/**
* 转化long值的日期为yyyy-MM-dd HH:mm:ss.SSS格式的日期
*
* @param millSec 日期long值 5270400000
* @return 日期,以yyyy-MM-dd HH:mm:ss.SSS格式输出 1970-03-03 08:00:00.000
*/
public static String transferLongToDate(String millSec) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
Date date = new Date(Long.parseLong(millSec));
return sdf.format(date);
}
获取当前日期是一个星期的第几天;
public static int getDayOfWeek() {
Calendar cal = Calendar.getInstance();
cal.setTime(new Date());
return cal.get(Calendar.DAY_OF_WEEK) - 1;
}
获取当前小时 :2019-08-23 17;
/**
* 获取当前小时 :2019-08-23 17
*
* @return 2019-08-27 17
*/
public static String getCurrentHour() {
GregorianCalendar calendar = new GregorianCalendar();
int hour = calendar.get(Calendar.HOUR_OF_DAY);
if (hour < 10) {
return DateUtils.getCurrentTime() + " 0" + hour;
}
return DateUtils.getDateByString() + " " + hour;
}
获取当前时间一个小时前 2019-08-23 16;
/**
* 获取当前时间一个小时前
* @return 2019-08-27 16
*/
public static String getCurrentHourBefore() {
GregorianCalendar calendar = new GregorianCalendar();
int hour = calendar.get(Calendar.HOUR_OF_DAY);
if (hour > 0) {
hour = calendar.get(Calendar.HOUR_OF_DAY) - 1;
if (hour < 10) {
return DateUtils.getDateByString() + " 0" + hour;
}
return DateUtils.getDateByString() + " " + hour;
}
//获取当前日期前一天
return DateUtils.getBeforeDay() + " " + 23;
}
获取当前日期前一天 2019-08-22;
/**
* 获取当前日期前一天
*
* @return 2019-08-26
*/
public static String getBeforeDay() {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date date = new Date();
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.add(Calendar.DAY_OF_MONTH, -1);
date = calendar.getTime();
return sdf.format(date);
}
获取最近七天 2019-08-20(有时候用于查最近七天数据起始时间);
/**
* 获取最近七天
*
* @return 2019-08-20
*/
public static String getServen() {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Calendar c = Calendar.getInstance();
c.add(Calendar.DATE, -7);
Date monday = c.getTime();
String preMonday = sdf.format(monday);
return preMonday;
}
获取最近一个月 2019-07-20 (有时候用于查最近一个月数据起始时间);
/**
* 获取最近一个月
*
* @return 2019-07-27
*/
public static String getOneMonth() {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Calendar c = Calendar.getInstance();
c.add(Calendar.MONTH, -1);
Date monday = c.getTime();
String preMonday = sdf.format(monday);
return preMonday;
}
获取最近三个月 2019-05-20 (有时候用于查最近三个月数据起始时间);
/**
* 获取最近三个月
*
* @return 2019-05-27
*/
public static String getThreeMonth() {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Calendar c = Calendar.getInstance();
c.add(Calendar.MONTH, -3);
Date monday = c.getTime();
String preMonday = sdf.format(monday);
return preMonday;
}
获取最近一年 2018-08-20 (有时候用于查最近一年数据起始时间);
/**
* 获取最近一年
*
* @return 2018-08-27
*/
public static String getOneYear() {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Calendar c = Calendar.getInstance();
c.add(Calendar.YEAR, -1);
Date start = c.getTime();
String startDay = sdf.format(start);
return startDay;
}
获取今年月份数据list(比如当前月为8月,返回list中包含8个数据1-8);
private static int month = Calendar.getInstance().get(Calendar.MONTH) + 1;
/**
* 获取今年月份数据
* 说明 有的需求前端需要根据月份查询每月数据,此时后台给前端返回今年共有多少月份
*
* @return [1, 2, 3, 4, 5, 6, 7, 8]
*/
public static List getMonthList(){
List list = new ArrayList();
for (int i = 1; i <= month; i++) {
list.add(i);
}
return list;
}
获取今年季度数据list(比如当前月为8月,为一年中第三个季度,返回list中包含3个数据1-3);
/**
* 返回当前年度季度list
* 本年度截止目前共三个季度,然后根据1,2,3分别查询相关起止时间
* @return [1, 2, 3]
*/
public static List getQuartList(){
int quart = month / 3 + 1;
List list = new ArrayList();
for (int i = 1; i <= quart; i++) {
list.add(i);
}
return list;
}
public static void main(String[] args) {
System.out.println(DateUtils.getQuartList());
}
以上资料参考来源:最全的java时间工具类_java_mdzy的博客-CSDN博客_java 时间工具类
二 时间转换
1、String与Date(Java.util.Date)的转换
1、String--->Date
String str="2014/1/11 12:34:25";
Date date=new Date();
DateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss"); //这里规定时间的格式要与String时间类型的格式相同
date=sdf.parse(str);//date类
2、Date--->String
Date date=new Date();
DateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss"); //Date转String时,这里的格式随意
String tr=sdf.format(date);
2、String与Timestamp的转换
1、String--->Timestamp
String str="2014/1/11 12:34:25";
Timestamp ts=new Timestamp();
ts=Timestamp.valueOf(str);
方法二:
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
// 申请操作时间
java.sql.Timestamp applyopttime = obj.get("applyopttime")==null?timestamp:java.sql.Timestamp.valueOf(df.format(new java.sql.Date(sdf1.parse(obj.get("applyopttime").toString()).getTime())));
2、Timestamp--->String
方法一:
Timestamp ts=new Timestamp(System.currentTimeMillis());
String str=ts.toString();
3.long类型转换成日期
String 类型毫秒数转换成日期
/**
* @Description: String类型毫秒数转换成日期
* [@param](http://my.oschina.net/param) lo 毫秒数
* @return String yyyy-MM-dd HH:mm:ss
*/
public static String stringToDate(String lo){
long time = Long.parseLong(lo);
Date date = new Date(time);
SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
return sd.format(date);
}
long 类型转换成日期
/**
* @Description: long类型转换成日期
*
* @param lo 毫秒数
* @return String yyyy-MM-dd HH:mm:ss
*/
public static String longToDate(long lo){
Date date = new Date(lo);
SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
return sd.format(date);
}