Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
A
amos-boot-zx-biz
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Jobs
Commits
Open sidebar
项目统一框架
一体化_户用光伏项目代码
amos-boot-zx-biz
Commits
8ce016da
Commit
8ce016da
authored
May 22, 2024
by
wujiang
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
添加时间转换
parent
7bc290f0
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
897 additions
and
860 deletions
+897
-860
DateUtils.java
...ava/com/yeejoin/amos/boot/biz/common/utils/DateUtils.java
+897
-860
No files found.
amos-boot-biz-common/src/main/java/com/yeejoin/amos/boot/biz/common/utils/DateUtils.java
View file @
8ce016da
...
...
@@ -15,607 +15,645 @@ import java.util.*;
**/
public
class
DateUtils
{
public
static
final
String
DATE_TIME_PATTERN
=
"yyyy-MM-dd HH:mm:ss"
;
public
static
final
String
MINUTE_PATTERN
=
"yyyy-MM-dd HH:mm"
;
public
static
final
String
HOUR_PATTERN
=
"yyyy-MM-dd HH:mm:ss"
;
public
static
final
String
DATE_PATTERN
=
"yyyy-MM-dd"
;
public
static
final
String
MONTH_PATTERN
=
"yyyy-MM"
;
public
static
final
String
YEAR_PATTERN
=
"yyyy"
;
public
static
final
String
MINUTE_ONLY_PATTERN
=
"mm"
;
public
static
final
String
HOUR_ONLY_PATTERN
=
"HH"
;
public
static
final
String
DATE_PATTERN_NUM
=
"yyyyMMdd"
;
public
static
final
String
CHN_DATE_PATTERN_YEAR
=
"yyyy年"
;
public
static
final
String
CHN_DATE_PATTERN_MONTH
=
"MM月"
;
public
static
final
String
CHN_DATE_PATTERN
=
"yyyy年MM月dd日"
;
/**
* 获取 当前年、半年、季度、月、日、小时 开始结束时间
*/
private
static
final
SimpleDateFormat
shortSdf
=
new
SimpleDateFormat
(
"yyyy-MM-dd"
);
private
static
final
SimpleDateFormat
longHourSdf
=
new
SimpleDateFormat
(
"yyyy-MM-dd HH"
);
private
static
final
SimpleDateFormat
longSdf
=
new
SimpleDateFormat
(
"yyyy-MM-dd HH:mm:ss"
);
private
static
final
Calendar
calendar
=
Calendar
.
getInstance
();
private
static
final
SimpleDateFormat
shortDateNew
=
new
SimpleDateFormat
(
"yyyy/M/d"
);
/**
* 获取时分秒
*/
private
static
final
SimpleDateFormat
timeSdf
=
new
SimpleDateFormat
(
"HH:mm:ss"
);
/**
* 获取当前时间
*
* @return 当前日期时间
*/
public
static
Date
getDateNow
()
{
return
new
Date
();
}
/**
* 获取当前时间
*
* @return 当前日期时间
*/
public
static
String
getDateNowString
()
{
return
convertDateToString
(
getDateNow
(),
DATE_TIME_PATTERN
);
}
public
static
String
date2LongStr
(
Date
dateDate
)
{
SimpleDateFormat
formatter
=
new
SimpleDateFormat
(
"yyyy-MM-dd HH:mm:ss"
);
String
dateString
=
formatter
.
format
(
dateDate
);
return
dateString
;
}
/**
* 获取现在日期字符串
*
* @return返回字符串格式 yyyy-MM-dd
*/
public
static
String
getDateNowShortStr
()
{
Date
currentTime
=
new
Date
();
SimpleDateFormat
formatter
=
new
SimpleDateFormat
(
DATE_PATTERN
);
String
dateString
=
formatter
.
format
(
currentTime
);
return
dateString
;
}
/**
* 将日期转换为字符串
*
* @param date 日期
* @param format 字符串格式
* @return 日期字符串
*/
public
static
String
convertDateToString
(
Date
date
,
String
format
)
{
SimpleDateFormat
df
=
null
;
String
returnValue
=
""
;
if
(
null
!=
date
)
{
df
=
new
SimpleDateFormat
(
format
);
returnValue
=
df
.
format
(
date
);
}
return
returnValue
;
}
/**
* 获取当前时间任意
*
* @return
*/
public
static
String
get
(
int
field
)
{
return
String
.
valueOf
(
getCalendar
().
get
(
field
));
}
/**
* 当前日历,这里用中国时间表示
*
* @return 以当地时区表示的系统当前日历
*/
public
static
Calendar
getCalendar
()
{
return
Calendar
.
getInstance
();
}
/**
* 日期相加减天数
*
* @param date 如果为Null,则为当前时间
* @param days 加减天数
* @param includeTime 是否包括时分秒,true表示包含
* @return
* @throws ParseException
*/
public
static
Date
dateAdd
(
Date
date
,
int
days
,
boolean
includeTime
)
throws
ParseException
{
if
(
date
==
null
)
{
date
=
new
Date
();
}
if
(!
includeTime
)
{
SimpleDateFormat
sdf
=
new
SimpleDateFormat
(
DateUtils
.
DATE_PATTERN
);
date
=
sdf
.
parse
(
sdf
.
format
(
date
));
}
Calendar
cal
=
Calendar
.
getInstance
();
cal
.
setTime
(
date
);
cal
.
add
(
Calendar
.
DATE
,
days
);
return
cal
.
getTime
();
}
/**
* 将长时间格式字符串转换为时间 yyyy-MM-dd HH:mm:ss
*
* @param strDate
* @return
*/
public
static
Date
longStr2Date
(
String
strDate
)
{
SimpleDateFormat
formatter
=
new
SimpleDateFormat
(
"yyyy-MM-dd HH:mm:ss"
);
ParsePosition
pos
=
new
ParsePosition
(
0
);
Date
strtodate
=
formatter
.
parse
(
strDate
,
pos
);
return
strtodate
;
}
/**
* 时间格式化成字符串
*
* @param date Date
* @param pattern StrUtils.DATE_TIME_PATTERN || StrUtils.DATE_PATTERN, 如果为空,则为yyyy-MM-dd
* @return
* @throws ParseException
*/
public
static
String
dateFormat
(
Date
date
,
String
pattern
)
throws
ParseException
{
if
(
StringUtils
.
isEmpty
(
pattern
))
{
pattern
=
DateUtils
.
DATE_PATTERN
;
}
SimpleDateFormat
sdf
=
new
SimpleDateFormat
(
pattern
);
return
sdf
.
format
(
date
);
}
/**
* 暂时不操作原生截取做下转换
*
* @param str
* @return
* @throws ParseException
*/
public
static
String
dateToString
(
String
str
)
{
SimpleDateFormat
sdf
=
new
SimpleDateFormat
(
"yyyy-MM-dd"
);
Date
parse
=
null
;
String
content
=
null
;
try
{
parse
=
sdf
.
parse
(
str
);
content
=
DateUtils
.
dateFormat
(
parse
,
DateUtils
.
DATE_PATTERN
);
}
catch
(
ParseException
e
)
{
e
.
printStackTrace
();
}
return
content
;
}
/*
* 将时间戳转换为时间
*/
public
static
String
stampToDate
(
Long
s
,
String
format
)
{
String
res
;
SimpleDateFormat
simpleDateFormat
=
new
SimpleDateFormat
(
format
);
Date
date
=
new
Date
(
s
);
res
=
simpleDateFormat
.
format
(
date
);
return
res
;
}
/**
* 字符串解析成时间对象
*
* @param dateTimeString String
* @param pattern StrUtils.DATE_TIME_PATTERN || StrUtils.DATE_PATTERN,如果为空,则为yyyy-MM-dd
* @return
* @throws ParseException
*/
public
static
Date
dateParse
(
String
dateTimeString
,
String
pattern
)
throws
ParseException
{
if
(
StringUtils
.
isEmpty
(
pattern
))
{
pattern
=
DateUtils
.
DATE_PATTERN
;
}
SimpleDateFormat
sdf
=
new
SimpleDateFormat
(
pattern
);
return
sdf
.
parse
(
dateTimeString
);
}
/**
* 将日期时间格式成只有日期的字符串(可以直接使用dateFormat,Pattern为Null进行格式化)
*
* @param dateTime Date
* @return
* @throws ParseException
*/
public
static
String
dateTimeToDateString
(
Date
dateTime
)
throws
ParseException
{
String
dateTimeString
=
DateUtils
.
dateFormat
(
dateTime
,
DateUtils
.
DATE_TIME_PATTERN
);
return
dateTimeString
.
substring
(
0
,
10
);
}
/**
* 当时、分、秒为00:00:00时,将日期时间格式成只有日期的字符串,
* 当时、分、秒不为00:00:00时,直接返回
*
* @param dateTime Date
* @return
* @throws ParseException
*/
public
static
String
dateTimeToDateStringIfTimeEndZero
(
Date
dateTime
)
throws
ParseException
{
String
dateTimeString
=
DateUtils
.
dateFormat
(
dateTime
,
DateUtils
.
DATE_TIME_PATTERN
);
if
(
dateTimeString
.
endsWith
(
"00:00:00"
))
{
return
dateTimeString
.
substring
(
0
,
10
);
}
else
{
return
dateTimeString
;
}
}
/**
* 将日期时间格式成日期对象,和dateParse互用
*
* @param dateTime Date
* @return Date
* @throws ParseException
*/
public
static
Date
dateTimeToDate
(
Date
dateTime
)
throws
ParseException
{
Calendar
cal
=
Calendar
.
getInstance
();
cal
.
setTime
(
dateTime
);
cal
.
set
(
Calendar
.
HOUR_OF_DAY
,
0
);
cal
.
set
(
Calendar
.
MINUTE
,
0
);
cal
.
set
(
Calendar
.
SECOND
,
0
);
cal
.
set
(
Calendar
.
MILLISECOND
,
0
);
return
cal
.
getTime
();
}
/**
* 时间加减小时
*
* @param startDate 要处理的时间,Null则为当前时间
* @param hours 加减的小时
* @return Date
*/
public
static
Date
dateAddHours
(
Date
startDate
,
int
hours
)
{
if
(
startDate
==
null
)
{
startDate
=
new
Date
();
}
Calendar
c
=
Calendar
.
getInstance
();
c
.
setTime
(
startDate
);
c
.
set
(
Calendar
.
HOUR
,
c
.
get
(
Calendar
.
HOUR
)
+
hours
);
return
c
.
getTime
();
}
/**
* 时间加减分钟
*
* @param startDate 要处理的时间,Null则为当前时间
* @param minutes 加减的分钟
* @return
*/
public
static
Date
dateAddMinutes
(
Date
startDate
,
int
minutes
)
{
if
(
startDate
==
null
)
{
startDate
=
new
Date
();
}
Calendar
c
=
Calendar
.
getInstance
();
c
.
setTime
(
startDate
);
c
.
set
(
Calendar
.
MINUTE
,
c
.
get
(
Calendar
.
MINUTE
)
+
minutes
);
return
c
.
getTime
();
}
/**
* 时间加减秒数
*
* @param startDate 要处理的时间,Null则为当前时间
* @param
* @return
*/
public
static
Date
dateAddSeconds
(
Date
startDate
,
int
seconds
)
{
if
(
startDate
==
null
)
{
startDate
=
new
Date
();
}
Calendar
c
=
Calendar
.
getInstance
();
c
.
setTime
(
startDate
);
c
.
set
(
Calendar
.
SECOND
,
c
.
get
(
Calendar
.
SECOND
)
+
seconds
);
return
c
.
getTime
();
}
/**
* 时间加减天数
*
* @param startDate 要处理的时间,Null则为当前时间
* @param days 加减的天数
* @return Date
*/
public
static
Date
dateAddDays
(
Date
startDate
,
int
days
)
{
if
(
startDate
==
null
)
{
startDate
=
new
Date
();
}
Calendar
c
=
Calendar
.
getInstance
();
c
.
setTime
(
startDate
);
c
.
set
(
Calendar
.
DATE
,
c
.
get
(
Calendar
.
DATE
)
+
days
);
return
c
.
getTime
();
}
/**
* 时间加减月数
*
* @param startDate 要处理的时间,Null则为当前时间
* @param months 加减的月数
* @return Date
*/
public
static
Date
dateAddMonths
(
Date
startDate
,
int
months
)
{
if
(
startDate
==
null
)
{
startDate
=
new
Date
();
}
Calendar
c
=
Calendar
.
getInstance
();
c
.
setTime
(
startDate
);
c
.
set
(
Calendar
.
MONTH
,
c
.
get
(
Calendar
.
MONTH
)
+
months
);
return
c
.
getTime
();
}
/**
* 时间加减年数
*
* @param startDate 要处理的时间,Null则为当前时间
* @param years 加减的年数
* @return Date
*/
public
static
Date
dateAddYears
(
Date
startDate
,
int
years
)
{
if
(
startDate
==
null
)
{
startDate
=
new
Date
();
}
Calendar
c
=
Calendar
.
getInstance
();
c
.
setTime
(
startDate
);
c
.
set
(
Calendar
.
YEAR
,
c
.
get
(
Calendar
.
YEAR
)
+
years
);
return
c
.
getTime
();
}
/**
* 时间比较(如果myDate>compareDate返回1,<返回-1,相等返回0)
*
* @param myDate 时间
* @param compareDate 要比较的时间
* @return int
*/
public
static
int
dateCompare
(
Date
myDate
,
Date
compareDate
)
{
Calendar
myCal
=
Calendar
.
getInstance
();
Calendar
compareCal
=
Calendar
.
getInstance
();
myCal
.
setTime
(
myDate
);
compareCal
.
setTime
(
compareDate
);
return
myCal
.
compareTo
(
compareCal
);
}
/**
* 获取两个时间中最小的一个时间
*
* @param date
* @param compareDate
* @return
*/
public
static
Date
dateMin
(
Date
date
,
Date
compareDate
)
{
if
(
date
==
null
)
{
return
compareDate
;
}
if
(
compareDate
==
null
)
{
return
date
;
}
if
(
1
==
dateCompare
(
date
,
compareDate
))
{
return
compareDate
;
}
else
if
(-
1
==
dateCompare
(
date
,
compareDate
))
{
return
date
;
}
return
date
;
}
/**
* 获取两个时间中最大的一个时间
*
* @param date
* @param compareDate
* @return
*/
public
static
Date
dateMax
(
Date
date
,
Date
compareDate
)
{
if
(
date
==
null
)
{
return
compareDate
;
}
if
(
compareDate
==
null
)
{
return
date
;
}
if
(
1
==
dateCompare
(
date
,
compareDate
))
{
return
date
;
}
else
if
(-
1
==
dateCompare
(
date
,
compareDate
))
{
return
compareDate
;
}
return
date
;
}
/**
* 获取两个日期(不含时分秒)相差的天数,不包含今天
*
* @param startDate
* @param endDate
* @return
* @throws ParseException
*/
public
static
int
dateBetween
(
Date
startDate
,
Date
endDate
)
throws
ParseException
{
Date
dateStart
=
dateParse
(
dateFormat
(
startDate
,
DATE_PATTERN
),
DATE_PATTERN
);
Date
dateEnd
=
dateParse
(
dateFormat
(
endDate
,
DATE_PATTERN
),
DATE_PATTERN
);
return
(
int
)
((
dateEnd
.
getTime
()
-
dateStart
.
getTime
())
/
1000
/
60
/
60
/
24
);
}
/**
* 获取两个日期(不含时分秒)相差的天数,包含今天
*
* @param startDate
* @param endDate
* @return
* @throws ParseException
*/
public
static
int
dateBetweenIncludeToday
(
Date
startDate
,
Date
endDate
)
throws
ParseException
{
return
dateBetween
(
startDate
,
endDate
)
+
1
;
}
/**
* 获取日期时间的年份,如2017-02-13,返回2017
*
* @param date
* @return
*/
public
static
int
getYear
(
Date
date
)
{
Calendar
cal
=
Calendar
.
getInstance
();
cal
.
setTime
(
date
);
return
cal
.
get
(
Calendar
.
YEAR
);
}
/**
* 获取日期时间的月份,如2017年2月13日,返回2
*
* @param date
* @return
*/
public
static
int
getMonth
(
Date
date
)
{
Calendar
cal
=
Calendar
.
getInstance
();
cal
.
setTime
(
date
);
return
cal
.
get
(
Calendar
.
MONTH
)
+
1
;
}
/**
* 获取日期时间的第几天(即返回日期的dd),如2017-02-13,返回13
*
* @param date
* @return
*/
public
static
int
getDate
(
Date
date
)
{
Calendar
cal
=
Calendar
.
getInstance
();
cal
.
setTime
(
date
);
return
cal
.
get
(
Calendar
.
DATE
);
}
/**
* 获取日期时间当月的总天数,如2017-02-13,返回28
*
* @param date
* @return
*/
public
static
int
getDaysOfMonth
(
Date
date
)
{
Calendar
cal
=
Calendar
.
getInstance
();
cal
.
setTime
(
date
);
return
cal
.
getActualMaximum
(
Calendar
.
DATE
);
}
/**
* 获取日期时间当年的总天数,如2017-02-13,返回2017年的总天数
*
* @param date
* @return
*/
public
static
int
getDaysOfYear
(
Date
date
)
{
Calendar
cal
=
Calendar
.
getInstance
();
cal
.
setTime
(
date
);
return
cal
.
getActualMaximum
(
Calendar
.
DAY_OF_YEAR
);
}
/**
* 根据时间获取当月最大的日期
* <li>2017-02-13,返回2017-02-28</li>
* <li>2016-02-13,返回2016-02-29</li>
* <li>2016-01-11,返回2016-01-31</li>
*
* @param date Date
* @return
* @throws Exception
*/
public
static
Date
maxDateOfMonth
(
Date
date
)
throws
Exception
{
Calendar
cal
=
Calendar
.
getInstance
();
cal
.
setTime
(
date
);
int
value
=
cal
.
getActualMaximum
(
Calendar
.
DATE
);
return
dateParse
(
dateFormat
(
date
,
MONTH_PATTERN
)
+
"-"
+
value
,
null
);
}
/**
* 根据时间获取当月最小的日期,也就是返回当月的1号日期对象
*
* @param date Date
* @return
* @throws Exception
*/
public
static
Date
minDateOfMonth
(
Date
date
)
throws
Exception
{
Calendar
cal
=
Calendar
.
getInstance
();
cal
.
setTime
(
date
);
int
value
=
cal
.
getActualMinimum
(
Calendar
.
DATE
);
return
dateParse
(
dateFormat
(
date
,
MONTH_PATTERN
)
+
"-"
+
value
,
null
);
}
/**
* 根据年月返回第一天
*
* @param yearParam
* @param monthParam
* @return
*/
public
static
Date
getFirstDayByMonth
(
int
yearParam
,
int
monthParam
)
{
Calendar
c
=
Calendar
.
getInstance
(
Locale
.
CHINA
);
c
.
set
(
yearParam
,
monthParam
-
1
,
1
);
try
{
Date
date
=
shortSdf
.
parse
(
shortSdf
.
format
(
c
.
getTime
())
+
" 00:00:00"
);
return
date
;
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
return
null
;
}
/**
* 获取某月的日期List
*
* @param yearParam
* @param monthParam
* @return
*/
public
static
List
<
String
>
getDayByMonth
(
int
yearParam
,
int
monthParam
)
{
List
list
=
new
ArrayList
();
Calendar
aCalendar
=
Calendar
.
getInstance
(
Locale
.
CHINA
);
aCalendar
.
set
(
yearParam
,
monthParam
-
1
,
1
);
int
year
=
aCalendar
.
get
(
Calendar
.
YEAR
);
//年份
int
month
=
aCalendar
.
get
(
Calendar
.
MONTH
)
+
1
;
//月份
int
day
=
aCalendar
.
getActualMaximum
(
Calendar
.
DATE
);
for
(
int
i
=
1
;
i
<=
day
;
i
++)
{
list
.
add
(
year
+
"/"
+
month
+
"/"
+
i
);
}
return
list
;
}
/**
* 当前月的结束时间,即2012-01-31 23:59:59
*
* @return
*/
public
static
Date
getCurrentMonthEndTime
(
Date
date
)
{
Calendar
c
=
Calendar
.
getInstance
();
c
.
setTime
(
date
);
Date
now
=
null
;
c
.
set
(
Calendar
.
DATE
,
1
);
c
.
add
(
Calendar
.
MONTH
,
1
);
c
.
add
(
Calendar
.
DATE
,
-
1
);
try
{
now
=
longSdf
.
parse
(
shortSdf
.
format
(
c
.
getTime
())
+
" 23:59:59"
);
}
catch
(
ParseException
e
)
{
e
.
printStackTrace
();
}
return
now
;
}
public
static
void
main
(
String
[]
args
)
throws
Exception
{
/*System.out.println(dateTimeToDate(new Date()));
System.out.println(dateParse("2017-02-04 14:58:20", null));
System.out.println(dateTimeToDateStringIfTimeEndZero(new Date()));
System.out.println(dateTimeToDateStringIfTimeEndZero(dateTimeToDate(new Date())));*/
//System.out.println(dateBetween(dateParse("2017-01-30", null), dateParse("2017-02-01", null)));
//System.out.println(dateBetweenIncludeToday(dateParse("2017-01-30", null), dateParse("2017-02-01", null)));
public
static
final
String
DATE_TIME_PATTERN
=
"yyyy-MM-dd HH:mm:ss"
;
public
static
final
String
MINUTE_PATTERN
=
"yyyy-MM-dd HH:mm"
;
public
static
final
String
HOUR_PATTERN
=
"yyyy-MM-dd HH"
;
public
static
final
String
DATE_PATTERN
=
"yyyy-MM-dd"
;
public
static
final
String
MONTH_PATTERN
=
"yyyy-MM"
;
public
static
final
String
YEAR_PATTERN
=
"yyyy"
;
public
static
final
String
MINUTE_ONLY_PATTERN
=
"mm"
;
public
static
final
String
HOUR_ONLY_PATTERN
=
"HH"
;
public
static
final
String
DATE_PATTERN_NUM
=
"yyyyMMdd"
;
public
static
final
String
CHN_DATE_PATTERN_YEAR
=
"yyyy年"
;
public
static
final
String
CHN_DATE_PATTERN_MONTH
=
"MM月"
;
public
static
final
String
CHN_DATE_PATTERN
=
"yyyy年MM月dd日"
;
/**
* 获取 当前年、半年、季度、月、日、小时 开始结束时间
*/
private
static
final
SimpleDateFormat
shortSdf
=
new
SimpleDateFormat
(
"yyyy-MM-dd"
);
private
static
final
SimpleDateFormat
longHourSdf
=
new
SimpleDateFormat
(
"yyyy-MM-dd HH"
);
private
static
final
SimpleDateFormat
longSdf
=
new
SimpleDateFormat
(
"yyyy-MM-dd HH:mm:ss"
);
private
static
final
Calendar
calendar
=
Calendar
.
getInstance
();
private
static
final
SimpleDateFormat
shortDateNew
=
new
SimpleDateFormat
(
"yyyy/M/d"
);
/**
* 获取时分秒
*/
private
static
final
SimpleDateFormat
timeSdf
=
new
SimpleDateFormat
(
"HH:mm:ss"
);
/**
* 获取当前时间
*
* @return 当前日期时间
*/
public
static
Date
getDateNow
()
{
return
new
Date
();
}
/**
* 获取当前时间
*
* @return 当前日期时间
*/
public
static
String
getDateNowString
()
{
return
convertDateToString
(
getDateNow
(),
DATE_TIME_PATTERN
);
}
public
static
String
date2LongStr
(
Date
dateDate
)
{
SimpleDateFormat
formatter
=
new
SimpleDateFormat
(
"yyyy-MM-dd HH:mm:ss"
);
String
dateString
=
formatter
.
format
(
dateDate
);
return
dateString
;
}
/**
* 获取现在日期字符串
*
* @return返回字符串格式 yyyy-MM-dd
*/
public
static
String
getDateNowShortStr
()
{
Date
currentTime
=
new
Date
();
SimpleDateFormat
formatter
=
new
SimpleDateFormat
(
DATE_PATTERN
);
String
dateString
=
formatter
.
format
(
currentTime
);
return
dateString
;
}
/**
* 将日期转换为字符串
*
* @param date 日期
* @param format 字符串格式
* @return 日期字符串
*/
public
static
String
convertDateToString
(
Date
date
,
String
format
)
{
SimpleDateFormat
df
=
null
;
String
returnValue
=
""
;
if
(
null
!=
date
)
{
df
=
new
SimpleDateFormat
(
format
);
returnValue
=
df
.
format
(
date
);
}
return
returnValue
;
}
/**
* 获取当前时间任意
*
* @return
*/
public
static
String
get
(
int
field
)
{
return
String
.
valueOf
(
getCalendar
().
get
(
field
));
}
/**
* 当前日历,这里用中国时间表示
*
* @return 以当地时区表示的系统当前日历
*/
public
static
Calendar
getCalendar
()
{
return
Calendar
.
getInstance
();
}
/**
* 日期相加减天数
*
* @param date 如果为Null,则为当前时间
* @param days 加减天数
* @param includeTime 是否包括时分秒,true表示包含
* @return
* @throws ParseException
*/
public
static
Date
dateAdd
(
Date
date
,
int
days
,
boolean
includeTime
)
throws
ParseException
{
if
(
date
==
null
)
{
date
=
new
Date
();
}
if
(!
includeTime
)
{
SimpleDateFormat
sdf
=
new
SimpleDateFormat
(
DateUtils
.
DATE_PATTERN
);
date
=
sdf
.
parse
(
sdf
.
format
(
date
));
}
Calendar
cal
=
Calendar
.
getInstance
();
cal
.
setTime
(
date
);
cal
.
add
(
Calendar
.
DATE
,
days
);
return
cal
.
getTime
();
}
/**
* 将长时间格式字符串转换为时间 yyyy-MM-dd HH:mm:ss
*
* @param strDate
* @return
*/
public
static
Date
longStr2Date
(
String
strDate
)
{
SimpleDateFormat
formatter
=
new
SimpleDateFormat
(
"yyyy-MM-dd HH:mm:ss"
);
ParsePosition
pos
=
new
ParsePosition
(
0
);
Date
strtodate
=
formatter
.
parse
(
strDate
,
pos
);
return
strtodate
;
}
/**
* 时间格式化成字符串
*
* @param date Date
* @param pattern StrUtils.DATE_TIME_PATTERN || StrUtils.DATE_PATTERN,
* 如果为空,则为yyyy-MM-dd
* @return
* @throws ParseException
*/
public
static
String
dateFormat
(
Date
date
,
String
pattern
)
throws
ParseException
{
if
(
StringUtils
.
isEmpty
(
pattern
))
{
pattern
=
DateUtils
.
DATE_PATTERN
;
}
SimpleDateFormat
sdf
=
new
SimpleDateFormat
(
pattern
);
return
sdf
.
format
(
date
);
}
/**
* 暂时不操作原生截取做下转换
*
* @param str
* @return
* @throws ParseException
*/
public
static
String
dateToString
(
String
str
)
{
SimpleDateFormat
sdf
=
new
SimpleDateFormat
(
"yyyy-MM-dd"
);
Date
parse
=
null
;
String
content
=
null
;
try
{
parse
=
sdf
.
parse
(
str
);
content
=
DateUtils
.
dateFormat
(
parse
,
DateUtils
.
DATE_PATTERN
);
}
catch
(
ParseException
e
)
{
e
.
printStackTrace
();
}
return
content
;
}
/*
* 将时间戳转换为时间
*/
public
static
String
stampToDate
(
Long
s
,
String
format
)
{
String
res
;
SimpleDateFormat
simpleDateFormat
=
new
SimpleDateFormat
(
format
);
Date
date
=
new
Date
(
s
);
res
=
simpleDateFormat
.
format
(
date
);
return
res
;
}
/**
* 字符串解析成时间对象
*
* @param dateTimeString String
* @param pattern StrUtils.DATE_TIME_PATTERN ||
* StrUtils.DATE_PATTERN,如果为空,则为yyyy-MM-dd
* @return
* @throws ParseException
*/
public
static
Date
dateParse
(
String
dateTimeString
,
String
pattern
)
throws
ParseException
{
if
(
StringUtils
.
isEmpty
(
pattern
))
{
pattern
=
DateUtils
.
DATE_PATTERN
;
}
SimpleDateFormat
sdf
=
new
SimpleDateFormat
(
pattern
);
return
sdf
.
parse
(
dateTimeString
);
}
/**
* 字符串解析成时间对象
*
* @param dateTimeString String
* @param pattern StrUtils.DATE_TIME_PATTERN ||
* StrUtils.DATE_PATTERN,如果为空,则为yyyy-MM-dd
* @return
* @throws ParseException
*/
public
static
Date
dateParse
(
String
dateTimeString
)
{
if
(
dateTimeString
==
null
)
{
return
null
;
}
try
{
if
(
dateTimeString
.
length
()
==
10
)
{
return
dateParse
(
dateTimeString
,
DateUtils
.
DATE_PATTERN
);
}
else
if
(
dateTimeString
.
length
()
==
13
)
{
return
dateParse
(
dateTimeString
,
DateUtils
.
HOUR_PATTERN
);
}
else
if
(
dateTimeString
.
length
()
==
16
)
{
return
dateParse
(
dateTimeString
,
DateUtils
.
MINUTE_PATTERN
);
}
else
{
return
dateParse
(
dateTimeString
,
DateUtils
.
DATE_TIME_PATTERN
);
}
}
catch
(
ParseException
e
)
{
e
.
printStackTrace
();
return
null
;
}
}
/**
* 将日期时间格式成只有日期的字符串(可以直接使用dateFormat,Pattern为Null进行格式化)
*
* @param dateTime Date
* @return
* @throws ParseException
*/
public
static
String
dateTimeToDateString
(
Date
dateTime
)
throws
ParseException
{
String
dateTimeString
=
DateUtils
.
dateFormat
(
dateTime
,
DateUtils
.
DATE_TIME_PATTERN
);
return
dateTimeString
.
substring
(
0
,
10
);
}
/**
* 当时、分、秒为00:00:00时,将日期时间格式成只有日期的字符串, 当时、分、秒不为00:00:00时,直接返回
*
* @param dateTime Date
* @return
* @throws ParseException
*/
public
static
String
dateTimeToDateStringIfTimeEndZero
(
Date
dateTime
)
throws
ParseException
{
String
dateTimeString
=
DateUtils
.
dateFormat
(
dateTime
,
DateUtils
.
DATE_TIME_PATTERN
);
if
(
dateTimeString
.
endsWith
(
"00:00:00"
))
{
return
dateTimeString
.
substring
(
0
,
10
);
}
else
{
return
dateTimeString
;
}
}
/**
* 将日期时间格式成日期对象,和dateParse互用
*
* @param dateTime Date
* @return Date
* @throws ParseException
*/
public
static
Date
dateTimeToDate
(
Date
dateTime
)
throws
ParseException
{
Calendar
cal
=
Calendar
.
getInstance
();
cal
.
setTime
(
dateTime
);
cal
.
set
(
Calendar
.
HOUR_OF_DAY
,
0
);
cal
.
set
(
Calendar
.
MINUTE
,
0
);
cal
.
set
(
Calendar
.
SECOND
,
0
);
cal
.
set
(
Calendar
.
MILLISECOND
,
0
);
return
cal
.
getTime
();
}
/**
* 时间加减小时
*
* @param startDate 要处理的时间,Null则为当前时间
* @param hours 加减的小时
* @return Date
*/
public
static
Date
dateAddHours
(
Date
startDate
,
int
hours
)
{
if
(
startDate
==
null
)
{
startDate
=
new
Date
();
}
Calendar
c
=
Calendar
.
getInstance
();
c
.
setTime
(
startDate
);
c
.
set
(
Calendar
.
HOUR
,
c
.
get
(
Calendar
.
HOUR
)
+
hours
);
return
c
.
getTime
();
}
/**
* 时间加减分钟
*
* @param startDate 要处理的时间,Null则为当前时间
* @param minutes 加减的分钟
* @return
*/
public
static
Date
dateAddMinutes
(
Date
startDate
,
int
minutes
)
{
if
(
startDate
==
null
)
{
startDate
=
new
Date
();
}
Calendar
c
=
Calendar
.
getInstance
();
c
.
setTime
(
startDate
);
c
.
set
(
Calendar
.
MINUTE
,
c
.
get
(
Calendar
.
MINUTE
)
+
minutes
);
return
c
.
getTime
();
}
/**
* 时间加减秒数
*
* @param startDate 要处理的时间,Null则为当前时间
* @param
* @return
*/
public
static
Date
dateAddSeconds
(
Date
startDate
,
int
seconds
)
{
if
(
startDate
==
null
)
{
startDate
=
new
Date
();
}
Calendar
c
=
Calendar
.
getInstance
();
c
.
setTime
(
startDate
);
c
.
set
(
Calendar
.
SECOND
,
c
.
get
(
Calendar
.
SECOND
)
+
seconds
);
return
c
.
getTime
();
}
/**
* 时间加减天数
*
* @param startDate 要处理的时间,Null则为当前时间
* @param days 加减的天数
* @return Date
*/
public
static
Date
dateAddDays
(
Date
startDate
,
int
days
)
{
if
(
startDate
==
null
)
{
startDate
=
new
Date
();
}
Calendar
c
=
Calendar
.
getInstance
();
c
.
setTime
(
startDate
);
c
.
set
(
Calendar
.
DATE
,
c
.
get
(
Calendar
.
DATE
)
+
days
);
return
c
.
getTime
();
}
/**
* 时间加减月数
*
* @param startDate 要处理的时间,Null则为当前时间
* @param months 加减的月数
* @return Date
*/
public
static
Date
dateAddMonths
(
Date
startDate
,
int
months
)
{
if
(
startDate
==
null
)
{
startDate
=
new
Date
();
}
Calendar
c
=
Calendar
.
getInstance
();
c
.
setTime
(
startDate
);
c
.
set
(
Calendar
.
MONTH
,
c
.
get
(
Calendar
.
MONTH
)
+
months
);
return
c
.
getTime
();
}
/**
* 时间加减年数
*
* @param startDate 要处理的时间,Null则为当前时间
* @param years 加减的年数
* @return Date
*/
public
static
Date
dateAddYears
(
Date
startDate
,
int
years
)
{
if
(
startDate
==
null
)
{
startDate
=
new
Date
();
}
Calendar
c
=
Calendar
.
getInstance
();
c
.
setTime
(
startDate
);
c
.
set
(
Calendar
.
YEAR
,
c
.
get
(
Calendar
.
YEAR
)
+
years
);
return
c
.
getTime
();
}
/**
* 时间比较(如果myDate>compareDate返回1,<返回-1,相等返回0)
*
* @param myDate 时间
* @param compareDate 要比较的时间
* @return int
*/
public
static
int
dateCompare
(
Date
myDate
,
Date
compareDate
)
{
Calendar
myCal
=
Calendar
.
getInstance
();
Calendar
compareCal
=
Calendar
.
getInstance
();
myCal
.
setTime
(
myDate
);
compareCal
.
setTime
(
compareDate
);
return
myCal
.
compareTo
(
compareCal
);
}
/**
* 获取两个时间中最小的一个时间
*
* @param date
* @param compareDate
* @return
*/
public
static
Date
dateMin
(
Date
date
,
Date
compareDate
)
{
if
(
date
==
null
)
{
return
compareDate
;
}
if
(
compareDate
==
null
)
{
return
date
;
}
if
(
1
==
dateCompare
(
date
,
compareDate
))
{
return
compareDate
;
}
else
if
(-
1
==
dateCompare
(
date
,
compareDate
))
{
return
date
;
}
return
date
;
}
/**
* 获取两个时间中最大的一个时间
*
* @param date
* @param compareDate
* @return
*/
public
static
Date
dateMax
(
Date
date
,
Date
compareDate
)
{
if
(
date
==
null
)
{
return
compareDate
;
}
if
(
compareDate
==
null
)
{
return
date
;
}
if
(
1
==
dateCompare
(
date
,
compareDate
))
{
return
date
;
}
else
if
(-
1
==
dateCompare
(
date
,
compareDate
))
{
return
compareDate
;
}
return
date
;
}
/**
* 获取两个日期(不含时分秒)相差的天数,不包含今天
*
* @param startDate
* @param endDate
* @return
* @throws ParseException
*/
public
static
int
dateBetween
(
Date
startDate
,
Date
endDate
)
throws
ParseException
{
Date
dateStart
=
dateParse
(
dateFormat
(
startDate
,
DATE_PATTERN
),
DATE_PATTERN
);
Date
dateEnd
=
dateParse
(
dateFormat
(
endDate
,
DATE_PATTERN
),
DATE_PATTERN
);
return
(
int
)
((
dateEnd
.
getTime
()
-
dateStart
.
getTime
())
/
1000
/
60
/
60
/
24
);
}
/**
* 获取两个日期(不含时分秒)相差的天数,包含今天
*
* @param startDate
* @param endDate
* @return
* @throws ParseException
*/
public
static
int
dateBetweenIncludeToday
(
Date
startDate
,
Date
endDate
)
throws
ParseException
{
return
dateBetween
(
startDate
,
endDate
)
+
1
;
}
/**
* 获取日期时间的年份,如2017-02-13,返回2017
*
* @param date
* @return
*/
public
static
int
getYear
(
Date
date
)
{
Calendar
cal
=
Calendar
.
getInstance
();
cal
.
setTime
(
date
);
return
cal
.
get
(
Calendar
.
YEAR
);
}
/**
* 获取日期时间的月份,如2017年2月13日,返回2
*
* @param date
* @return
*/
public
static
int
getMonth
(
Date
date
)
{
Calendar
cal
=
Calendar
.
getInstance
();
cal
.
setTime
(
date
);
return
cal
.
get
(
Calendar
.
MONTH
)
+
1
;
}
/**
* 获取日期时间的第几天(即返回日期的dd),如2017-02-13,返回13
*
* @param date
* @return
*/
public
static
int
getDate
(
Date
date
)
{
Calendar
cal
=
Calendar
.
getInstance
();
cal
.
setTime
(
date
);
return
cal
.
get
(
Calendar
.
DATE
);
}
/**
* 获取日期时间当月的总天数,如2017-02-13,返回28
*
* @param date
* @return
*/
public
static
int
getDaysOfMonth
(
Date
date
)
{
Calendar
cal
=
Calendar
.
getInstance
();
cal
.
setTime
(
date
);
return
cal
.
getActualMaximum
(
Calendar
.
DATE
);
}
/**
* 获取日期时间当年的总天数,如2017-02-13,返回2017年的总天数
*
* @param date
* @return
*/
public
static
int
getDaysOfYear
(
Date
date
)
{
Calendar
cal
=
Calendar
.
getInstance
();
cal
.
setTime
(
date
);
return
cal
.
getActualMaximum
(
Calendar
.
DAY_OF_YEAR
);
}
/**
* 根据时间获取当月最大的日期
* <li>2017-02-13,返回2017-02-28</li>
* <li>2016-02-13,返回2016-02-29</li>
* <li>2016-01-11,返回2016-01-31</li>
*
* @param date Date
* @return
* @throws Exception
*/
public
static
Date
maxDateOfMonth
(
Date
date
)
throws
Exception
{
Calendar
cal
=
Calendar
.
getInstance
();
cal
.
setTime
(
date
);
int
value
=
cal
.
getActualMaximum
(
Calendar
.
DATE
);
return
dateParse
(
dateFormat
(
date
,
MONTH_PATTERN
)
+
"-"
+
value
,
null
);
}
/**
* 根据时间获取当月最小的日期,也就是返回当月的1号日期对象
*
* @param date Date
* @return
* @throws Exception
*/
public
static
Date
minDateOfMonth
(
Date
date
)
throws
Exception
{
Calendar
cal
=
Calendar
.
getInstance
();
cal
.
setTime
(
date
);
int
value
=
cal
.
getActualMinimum
(
Calendar
.
DATE
);
return
dateParse
(
dateFormat
(
date
,
MONTH_PATTERN
)
+
"-"
+
value
,
null
);
}
/**
* 根据年月返回第一天
*
* @param yearParam
* @param monthParam
* @return
*/
public
static
Date
getFirstDayByMonth
(
int
yearParam
,
int
monthParam
)
{
Calendar
c
=
Calendar
.
getInstance
(
Locale
.
CHINA
);
c
.
set
(
yearParam
,
monthParam
-
1
,
1
);
try
{
Date
date
=
shortSdf
.
parse
(
shortSdf
.
format
(
c
.
getTime
())
+
" 00:00:00"
);
return
date
;
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
return
null
;
}
/**
* 获取某月的日期List
*
* @param yearParam
* @param monthParam
* @return
*/
public
static
List
<
String
>
getDayByMonth
(
int
yearParam
,
int
monthParam
)
{
List
list
=
new
ArrayList
();
Calendar
aCalendar
=
Calendar
.
getInstance
(
Locale
.
CHINA
);
aCalendar
.
set
(
yearParam
,
monthParam
-
1
,
1
);
int
year
=
aCalendar
.
get
(
Calendar
.
YEAR
);
// 年份
int
month
=
aCalendar
.
get
(
Calendar
.
MONTH
)
+
1
;
// 月份
int
day
=
aCalendar
.
getActualMaximum
(
Calendar
.
DATE
);
for
(
int
i
=
1
;
i
<=
day
;
i
++)
{
list
.
add
(
year
+
"/"
+
month
+
"/"
+
i
);
}
return
list
;
}
/**
* 当前月的结束时间,即2012-01-31 23:59:59
*
* @return
*/
public
static
Date
getCurrentMonthEndTime
(
Date
date
)
{
Calendar
c
=
Calendar
.
getInstance
();
c
.
setTime
(
date
);
Date
now
=
null
;
c
.
set
(
Calendar
.
DATE
,
1
);
c
.
add
(
Calendar
.
MONTH
,
1
);
c
.
add
(
Calendar
.
DATE
,
-
1
);
try
{
now
=
longSdf
.
parse
(
shortSdf
.
format
(
c
.
getTime
())
+
" 23:59:59"
);
}
catch
(
ParseException
e
)
{
e
.
printStackTrace
();
}
return
now
;
}
public
static
void
main
(
String
[]
args
)
throws
Exception
{
/*
* System.out.println(dateTimeToDate(new Date()));
* System.out.println(dateParse("2017-02-04 14:58:20", null));
* System.out.println(dateTimeToDateStringIfTimeEndZero(new Date()));
* System.out.println(dateTimeToDateStringIfTimeEndZero(dateTimeToDate(new
* Date())));
*/
// System.out.println(dateBetween(dateParse("2017-01-30", null),
// dateParse("2017-02-01", null)));
// System.out.println(dateBetweenIncludeToday(dateParse("2017-01-30", null),
// dateParse("2017-02-01", null)));
// System.out.println(getDate(dateParse("2017-01-17", null)));
//System.out.println(getDate(dateParse("2017-01-17", null)));
/*
System.out.println(getDaysOfMonth(dateParse("2017-02-01", null)));
System.out.println(getDaysOfYear(dateParse("2017-01-30", null)));*/
//System.out.println(dateFormat(dateAddMonths(dateParse("2017-02-07", StrUtils.MONTH_PATTERN), -12), StrUtils
// .MONTH_PATTERN));
/*System.out.println(dateFormat(maxDateOfMonth(dateParse("2016-02", "yyyy-MM")), null));
System.out.println(dateFormat(minDateOfMonth(dateParse("2016-03-31", null)), null));*/
// System.out.println(getDate(dateParse("2017-01-17", null)));
/*
* System.out.println(getDaysOfMonth(dateParse("2017-02-01", null)));
* System.out.println(getDaysOfYear(dateParse("2017-01-30", null)));
*/
// System.out.println(dateFormat(dateAddMonths(dateParse("2017-02-07",
// StrUtils.MONTH_PATTERN), -12), StrUtils
// .MONTH_PATTERN));
/*
* System.out.println(dateFormat(maxDateOfMonth(dateParse("2016-02",
* "yyyy-MM")), null));
* System.out.println(dateFormat(minDateOfMonth(dateParse("2016-03-31", null)),
* null));
*/
// System.out.println(dateFormat(new Date(), CHN_DATE_PATTERN_YEAR));
// System.out.println(dateFormat(new Date(), CHN_DATE_PATTERN_MONTH));
...
...
@@ -623,264 +661,263 @@ public class DateUtils {
// System.out.println(getQuarterStr(getMonth(dateParse("2021-5-11", null))));
// System.out.println(getWeekBeginDate(dateParse("2021-10-11", null)));
// System.out.println(getWeekEndDate(dateParse("2021-10-11", null)));
System
.
out
.
println
(
secondsToTimeStr
(
3600
));
}
/**
* 当前日期毫秒.xls
*
* @return
*/
public
static
String
formatName
()
{
Calendar
calen
=
Calendar
.
getInstance
();
SimpleDateFormat
sdf
=
new
SimpleDateFormat
(
"yyyyMMddhhmmss"
);
String
name
=
sdf
.
format
(
calen
.
getTime
());
return
name
;
}
/**
* 获取某月的日期List
*
* @param dateStr
* @return
*/
public
static
List
<
Date
>
getDayByMonth
(
String
dateStr
)
{
List
<
Date
>
list
=
new
ArrayList
();
Date
date
=
null
;
try
{
date
=
shortSdf
.
parse
(
dateStr
);
calendar
.
setTime
(
date
);
int
month
=
calendar
.
get
(
Calendar
.
MONTH
)
+
1
;
//月份
int
year
=
calendar
.
get
(
Calendar
.
YEAR
);
//年份
int
day
=
calendar
.
getActualMaximum
(
Calendar
.
DATE
);
for
(
int
i
=
1
;
i
<=
day
;
i
++)
{
String
source
=
year
+
"-"
+
month
+
"-"
+
i
;
list
.
add
(
shortSdf
.
parse
(
source
));
}
}
catch
(
ParseException
e
)
{
e
.
printStackTrace
();
}
return
list
;
}
/**
* 判断一个时间是否在一个时间段内
*
* @param nowTime 当前时间
* @param beginTime 开始时间
* @param endTime 结束时间
*/
public
static
boolean
belongCalendar
(
Date
nowTime
,
Date
beginTime
,
Date
endTime
)
{
Calendar
date
=
Calendar
.
getInstance
();
date
.
setTime
(
nowTime
);
Calendar
begin
=
Calendar
.
getInstance
();
begin
.
setTime
(
beginTime
);
Calendar
end
=
Calendar
.
getInstance
();
end
.
setTime
(
endTime
);
return
date
.
after
(
begin
)
&&
date
.
before
(
end
);
}
/**
* 由出生日期获得年龄
*
* @param birthDay 出生日期
*/
public
static
int
getAge
(
Date
birthDay
)
{
if
(
birthDay
==
null
)
{
return
0
;
}
LocalDate
now
=
LocalDate
.
now
();
Calendar
cal
=
Calendar
.
getInstance
();
cal
.
setTime
(
birthDay
);
int
yearBirth
=
cal
.
get
(
Calendar
.
YEAR
);
int
monthBirth
=
cal
.
get
(
Calendar
.
MONTH
)
+
1
;
int
dayOfMonthBirth
=
cal
.
get
(
Calendar
.
DAY_OF_MONTH
);
LocalDate
birth
=
LocalDate
.
of
(
yearBirth
,
monthBirth
,
dayOfMonthBirth
);
if
(
birth
.
isAfter
(
now
))
{
return
0
;
}
int
age
=
birth
.
until
(
now
).
getYears
();
return
age
;
}
/**
* 根据两个日期返回相差的时分秒
*
* @param newTime 靠后时间
* @param oldTime 靠前时间
* @return
*/
public
static
String
getTimestr
(
Date
newTime
,
Date
oldTime
)
{
Long
newTimes
=
newTime
.
getTime
();
Long
oldTimes
=
oldTime
.
getTime
();
// 不改时间会多加八个小时
timeSdf
.
setTimeZone
(
TimeZone
.
getTimeZone
(
"GMT+00:00"
));
return
timeSdf
.
format
(
newTimes
-
oldTimes
);
}
/**
* 获取现在日期字符串时间戳格式
*
* @return返回字符串格式 yyyyMMdd
*/
public
static
String
getDateNowShortNumber
()
{
Date
currentTime
=
new
Date
();
SimpleDateFormat
formatter
=
new
SimpleDateFormat
(
DATE_PATTERN_NUM
);
String
dateString
=
formatter
.
format
(
currentTime
);
return
dateString
;
}
/**
* 获取一年的第几周
*
* @param date
* @return
*/
public
static
int
getWeekOfYear
(
Date
date
)
{
Calendar
c
=
Calendar
.
getInstance
();
c
.
setTime
(
date
);
int
week_of_year
=
c
.
get
(
Calendar
.
WEEK_OF_YEAR
);
return
week_of_year
;
}
/**
* 通过月份计算季度
*
* @param month
* @return
*/
public
static
int
getQuarter
(
int
month
)
{
if
(
month
<
1
||
month
>
12
)
{
throw
new
IllegalArgumentException
(
"month is invalid."
);
}
return
(
month
-
1
)
/
3
+
1
;
}
/**
* 通过月份计算季度
*
* @param month
* @return
*/
public
static
String
getQuarterStr
(
int
month
)
{
if
(
month
<
1
||
month
>
12
)
{
throw
new
IllegalArgumentException
(
"month is invalid."
);
}
return
(
month
-
1
)
/
3
+
1
+
""
;
}
/**
* 获得本天的开始时间,即2012-01-01 00:00:00
*
* @return
*/
public
static
Date
getCurrentDayStartTime
(
Date
date
)
{
try
{
date
=
shortSdf
.
parse
(
shortSdf
.
format
(
date
)
+
" 00:00:00"
);
}
catch
(
ParseException
e
)
{
e
.
printStackTrace
();
}
return
date
;
}
/**
* 获得本天的结束时间,即2012-01-01 23:59:59
*
* @return
*/
public
static
Date
getCurrentDayEndTime
(
Date
date
)
{
try
{
date
=
longSdf
.
parse
(
shortSdf
.
format
(
date
)
+
" 23:59:59"
);
}
catch
(
ParseException
e
)
{
e
.
printStackTrace
();
}
return
date
;
}
/**
* 获取指定时间所在周的第一天日期
*
* @param date
* @return
*/
public
static
int
getWeekBeginDate
(
Date
date
)
{
Calendar
calendar
=
Calendar
.
getInstance
();
calendar
.
setFirstDayOfWeek
(
Calendar
.
MONDAY
);
calendar
.
setTime
(
date
);
calendar
.
set
(
Calendar
.
DAY_OF_WEEK
,
Calendar
.
MONDAY
);
System
.
out
.
println
(
calendar
.
getTime
());
return
getDate
(
calendar
.
getTime
());
}
public
static
Date
beginDateOfWeek
(
Date
date
)
{
Calendar
calendar
=
Calendar
.
getInstance
();
calendar
.
setFirstDayOfWeek
(
Calendar
.
MONDAY
);
calendar
.
setTime
(
date
);
calendar
.
set
(
Calendar
.
DAY_OF_WEEK
,
Calendar
.
MONDAY
);
return
calendar
.
getTime
();
}
public
static
Date
endDateOfWeek
(
Date
date
)
{
Calendar
calendar
=
Calendar
.
getInstance
();
calendar
.
setFirstDayOfWeek
(
Calendar
.
MONDAY
);
calendar
.
setTime
(
date
);
calendar
.
set
(
Calendar
.
DAY_OF_WEEK
,
Calendar
.
SUNDAY
);
return
calendar
.
getTime
();
}
/**
* 获取指定时间所在周的最后一天日期
*
* @param date
* @return
*/
public
static
int
getWeekEndDate
(
Date
date
)
{
Calendar
calendar
=
Calendar
.
getInstance
();
calendar
.
setFirstDayOfWeek
(
Calendar
.
MONDAY
);
calendar
.
setTime
(
date
);
calendar
.
set
(
Calendar
.
DAY_OF_WEEK
,
Calendar
.
SUNDAY
);
System
.
out
.
println
(
calendar
.
getTime
());
return
getDate
(
calendar
.
getTime
());
}
public
static
Date
getBeginDateOfMonth
(
Date
date
)
{
Calendar
calendar
=
Calendar
.
getInstance
();
calendar
.
setTime
(
date
);
calendar
.
set
(
Calendar
.
DAY_OF_MONTH
,
calendar
.
getActualMinimum
(
Calendar
.
DAY_OF_MONTH
));
return
calendar
.
getTime
();
}
/**
* 将秒数转换为时分秒格式
*
* @param times
* @return
*/
public
static
String
secondsToTimeStr
(
int
times
)
{
if
(
times
<=
0
)
{
return
"00:00:00"
;
}
int
h
=
times
/
3600
;
int
m
=
(
times
-
h
*
3600
)
/
60
;
int
s
=
times
-
h
*
3600
-
m
*
60
;
String
time
=
"%02d:%02d:%02d"
;
time
=
String
.
format
(
time
,
h
,
m
,
s
);
return
time
;
}
public
static
Date
getTargetEndTime
(
Date
target
)
{
Calendar
calendar
=
Calendar
.
getInstance
();
calendar
.
setTime
(
target
);
calendar
.
set
(
Calendar
.
HOUR_OF_DAY
,
23
);
calendar
.
set
(
Calendar
.
MINUTE
,
59
);
calendar
.
set
(
Calendar
.
SECOND
,
59
);
Date
end
=
calendar
.
getTime
();
return
end
;
}
System
.
out
.
println
(
secondsToTimeStr
(
3600
));
}
/**
* 当前日期毫秒.xls
*
* @return
*/
public
static
String
formatName
()
{
Calendar
calen
=
Calendar
.
getInstance
();
SimpleDateFormat
sdf
=
new
SimpleDateFormat
(
"yyyyMMddhhmmss"
);
String
name
=
sdf
.
format
(
calen
.
getTime
());
return
name
;
}
/**
* 获取某月的日期List
*
* @param dateStr
* @return
*/
public
static
List
<
Date
>
getDayByMonth
(
String
dateStr
)
{
List
<
Date
>
list
=
new
ArrayList
();
Date
date
=
null
;
try
{
date
=
shortSdf
.
parse
(
dateStr
);
calendar
.
setTime
(
date
);
int
month
=
calendar
.
get
(
Calendar
.
MONTH
)
+
1
;
// 月份
int
year
=
calendar
.
get
(
Calendar
.
YEAR
);
// 年份
int
day
=
calendar
.
getActualMaximum
(
Calendar
.
DATE
);
for
(
int
i
=
1
;
i
<=
day
;
i
++)
{
String
source
=
year
+
"-"
+
month
+
"-"
+
i
;
list
.
add
(
shortSdf
.
parse
(
source
));
}
}
catch
(
ParseException
e
)
{
e
.
printStackTrace
();
}
return
list
;
}
/**
* 判断一个时间是否在一个时间段内
*
* @param nowTime 当前时间
* @param beginTime 开始时间
* @param endTime 结束时间
*/
public
static
boolean
belongCalendar
(
Date
nowTime
,
Date
beginTime
,
Date
endTime
)
{
Calendar
date
=
Calendar
.
getInstance
();
date
.
setTime
(
nowTime
);
Calendar
begin
=
Calendar
.
getInstance
();
begin
.
setTime
(
beginTime
);
Calendar
end
=
Calendar
.
getInstance
();
end
.
setTime
(
endTime
);
return
date
.
after
(
begin
)
&&
date
.
before
(
end
);
}
/**
* 由出生日期获得年龄
*
* @param birthDay 出生日期
*/
public
static
int
getAge
(
Date
birthDay
)
{
if
(
birthDay
==
null
)
{
return
0
;
}
LocalDate
now
=
LocalDate
.
now
();
Calendar
cal
=
Calendar
.
getInstance
();
cal
.
setTime
(
birthDay
);
int
yearBirth
=
cal
.
get
(
Calendar
.
YEAR
);
int
monthBirth
=
cal
.
get
(
Calendar
.
MONTH
)
+
1
;
int
dayOfMonthBirth
=
cal
.
get
(
Calendar
.
DAY_OF_MONTH
);
LocalDate
birth
=
LocalDate
.
of
(
yearBirth
,
monthBirth
,
dayOfMonthBirth
);
if
(
birth
.
isAfter
(
now
))
{
return
0
;
}
int
age
=
birth
.
until
(
now
).
getYears
();
return
age
;
}
/**
* 根据两个日期返回相差的时分秒
*
* @param newTime 靠后时间
* @param oldTime 靠前时间
* @return
*/
public
static
String
getTimestr
(
Date
newTime
,
Date
oldTime
)
{
Long
newTimes
=
newTime
.
getTime
();
Long
oldTimes
=
oldTime
.
getTime
();
// 不改时间会多加八个小时
timeSdf
.
setTimeZone
(
TimeZone
.
getTimeZone
(
"GMT+00:00"
));
return
timeSdf
.
format
(
newTimes
-
oldTimes
);
}
/**
* 获取现在日期字符串时间戳格式
*
* @return返回字符串格式 yyyyMMdd
*/
public
static
String
getDateNowShortNumber
()
{
Date
currentTime
=
new
Date
();
SimpleDateFormat
formatter
=
new
SimpleDateFormat
(
DATE_PATTERN_NUM
);
String
dateString
=
formatter
.
format
(
currentTime
);
return
dateString
;
}
/**
* 获取一年的第几周
*
* @param date
* @return
*/
public
static
int
getWeekOfYear
(
Date
date
)
{
Calendar
c
=
Calendar
.
getInstance
();
c
.
setTime
(
date
);
int
week_of_year
=
c
.
get
(
Calendar
.
WEEK_OF_YEAR
);
return
week_of_year
;
}
/**
* 通过月份计算季度
*
* @param month
* @return
*/
public
static
int
getQuarter
(
int
month
)
{
if
(
month
<
1
||
month
>
12
)
{
throw
new
IllegalArgumentException
(
"month is invalid."
);
}
return
(
month
-
1
)
/
3
+
1
;
}
/**
* 通过月份计算季度
*
* @param month
* @return
*/
public
static
String
getQuarterStr
(
int
month
)
{
if
(
month
<
1
||
month
>
12
)
{
throw
new
IllegalArgumentException
(
"month is invalid."
);
}
return
(
month
-
1
)
/
3
+
1
+
""
;
}
/**
* 获得本天的开始时间,即2012-01-01 00:00:00
*
* @return
*/
public
static
Date
getCurrentDayStartTime
(
Date
date
)
{
try
{
date
=
shortSdf
.
parse
(
shortSdf
.
format
(
date
)
+
" 00:00:00"
);
}
catch
(
ParseException
e
)
{
e
.
printStackTrace
();
}
return
date
;
}
/**
* 获得本天的结束时间,即2012-01-01 23:59:59
*
* @return
*/
public
static
Date
getCurrentDayEndTime
(
Date
date
)
{
try
{
date
=
longSdf
.
parse
(
shortSdf
.
format
(
date
)
+
" 23:59:59"
);
}
catch
(
ParseException
e
)
{
e
.
printStackTrace
();
}
return
date
;
}
/**
* 获取指定时间所在周的第一天日期
*
* @param date
* @return
*/
public
static
int
getWeekBeginDate
(
Date
date
)
{
Calendar
calendar
=
Calendar
.
getInstance
();
calendar
.
setFirstDayOfWeek
(
Calendar
.
MONDAY
);
calendar
.
setTime
(
date
);
calendar
.
set
(
Calendar
.
DAY_OF_WEEK
,
Calendar
.
MONDAY
);
System
.
out
.
println
(
calendar
.
getTime
());
return
getDate
(
calendar
.
getTime
());
}
public
static
Date
beginDateOfWeek
(
Date
date
)
{
Calendar
calendar
=
Calendar
.
getInstance
();
calendar
.
setFirstDayOfWeek
(
Calendar
.
MONDAY
);
calendar
.
setTime
(
date
);
calendar
.
set
(
Calendar
.
DAY_OF_WEEK
,
Calendar
.
MONDAY
);
return
calendar
.
getTime
();
}
public
static
Date
endDateOfWeek
(
Date
date
)
{
Calendar
calendar
=
Calendar
.
getInstance
();
calendar
.
setFirstDayOfWeek
(
Calendar
.
MONDAY
);
calendar
.
setTime
(
date
);
calendar
.
set
(
Calendar
.
DAY_OF_WEEK
,
Calendar
.
SUNDAY
);
return
calendar
.
getTime
();
}
/**
* 获取指定时间所在周的最后一天日期
*
* @param date
* @return
*/
public
static
int
getWeekEndDate
(
Date
date
)
{
Calendar
calendar
=
Calendar
.
getInstance
();
calendar
.
setFirstDayOfWeek
(
Calendar
.
MONDAY
);
calendar
.
setTime
(
date
);
calendar
.
set
(
Calendar
.
DAY_OF_WEEK
,
Calendar
.
SUNDAY
);
System
.
out
.
println
(
calendar
.
getTime
());
return
getDate
(
calendar
.
getTime
());
}
public
static
Date
getBeginDateOfMonth
(
Date
date
)
{
Calendar
calendar
=
Calendar
.
getInstance
();
calendar
.
setTime
(
date
);
calendar
.
set
(
Calendar
.
DAY_OF_MONTH
,
calendar
.
getActualMinimum
(
Calendar
.
DAY_OF_MONTH
));
return
calendar
.
getTime
();
}
/**
* 将秒数转换为时分秒格式
*
* @param times
* @return
*/
public
static
String
secondsToTimeStr
(
int
times
)
{
if
(
times
<=
0
)
{
return
"00:00:00"
;
}
int
h
=
times
/
3600
;
int
m
=
(
times
-
h
*
3600
)
/
60
;
int
s
=
times
-
h
*
3600
-
m
*
60
;
String
time
=
"%02d:%02d:%02d"
;
time
=
String
.
format
(
time
,
h
,
m
,
s
);
return
time
;
}
public
static
Date
getTargetEndTime
(
Date
target
)
{
Calendar
calendar
=
Calendar
.
getInstance
();
calendar
.
setTime
(
target
);
calendar
.
set
(
Calendar
.
HOUR_OF_DAY
,
23
);
calendar
.
set
(
Calendar
.
MINUTE
,
59
);
calendar
.
set
(
Calendar
.
SECOND
,
59
);
Date
end
=
calendar
.
getTime
();
return
end
;
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment