项目中经常有对时间进行处理的需求,下面是一些常用的操作整理,方便以后再次使用以及做相关复习。
1.字符串转换为日期
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
/**
* 字符串转换为日期
* @param dateStr 需要转换的日期
* @param dateFormat 日期格式yyyy-MM-dd/yyyy-MM-dd HH:mm:ss
*/
public static Date toDate(String dateStr, SimpleDateFormat dateFormat) throws ParseException{
Date date = null ;
try {
date = dateFormat.parse(dateStr);
} catch (ParseException e) {
logger.debug( "Fail to convert String to Date, {}" , dateStr);
}
return date;
}
|
2.时间戳转日期
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
/**
* 时间戳转日期
* @param date
* @return
*/
public static String dateToTime( long time, SimpleDateFormat dateFormat) throws ParseException{
String data = null ;
try {
dateFormat.format( new Date(time* 1000 ));
} catch (Exception e) {
logger.debug( "Fail to convert long to Date, {}" , time);
}
return data;
}
|
3.日期格式化成字符串
1
2
3
4
5
6
7
8
9
10
|
/**
* 日期格式化成字符串
* @param date
* @param dateFormat
* @return
* @throws ParseException
*/
public static String toString(Date date, SimpleDateFormat dateFormat) throws ParseException{
return dateFormat.format(date);
}
|
4.获取指定日期之前或之后的日期 ,十分秒为00:00:00
1
2
3
4
5
6
7
8
9
10
11
12
13
|
/**
* 获取指定日期之前或之后的日期
* @param date
* @param num 正数为之后,负数为之前
* @return yyyy-MM-dd 00:00:00
*/
public static Date getSpecificDate(Date date, int num){
Calendar todayCal = Calendar.getInstance();
todayCal.setTime(date);
Calendar c = Calendar.getInstance();
c.set(todayCal.get(Calendar.YEAR), todayCal.get(Calendar.MONTH), todayCal.get(Calendar.DAY_OF_MONTH) + num, 0 , 0 , 0 );
return c.getTime();
}
|
5.获取指定日期之前或之后的日期 ,时分秒为当前的
1
2
3
4
5
6
7
8
9
10
11
12
13
|
/**
* 获取指定日期之前或之后的日期
* @param date
* @param num 正数为之前,负数为之后
* @return yyyy-MM-dd + 当前的时分秒
*/
public static Date getSpecificDateAndHhMmSs(Date date, int num){
Calendar c = Calendar.getInstance();
c.setTime(date);
int day=c.get(Calendar.DATE);
c.set(Calendar.DATE,day - num);
return c.getTime();
}
|
6.将time类型的时间字符串 转换成 时、分
1
2
3
4
5
6
7
8
9
|
/**
* 将time类型的时间字符串 转换成 时、分
* HH-mm-ss -->> HH-mm
* @param time
* @return
*/
public static String timeToHHMM(String time){
return time.substring( 0 , time.length() - 3 );
}
|
7.获取某个日期的时、分
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
/**
* 获取某个日期的时、分
* @param date
* @return HH-mm
*/
public static String getHM(Date date){
Calendar ca = Calendar.getInstance();
ca.setTime(date);
Integer hour = ca.get(Calendar.HOUR_OF_DAY); //小时
Integer minute = ca.get(Calendar.MINUTE); //分
String rs_hour = hour.toString();
String rs_minute = minute.toString();
if (rs_hour.length() == 1 ){
rs_hour = "0" + hour;
}
if (rs_minute.length() == 1 ){
rs_minute = "0" + minute;
}
return rs_hour + ":" + rs_minute;
}
|
8.time类型的时间字符串 -->> 零点开始的秒数
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
/**
* time类型的时间字符串 -->> 零点开始的秒数
* @param time HH-mm / HH-mm-ss
* @return
*/
public static Integer timeToSeconds(String time){
String[] timeSplit = null ;
int hours = 0 ,minutes = 0 ,seconds = 0 ;
try {
timeSplit = time.split( ":" );
if (timeSplit.length == 2 ) {
hours = Integer.valueOf(timeSplit[ 0 ])* 60 * 60 ;
minutes = Integer.valueOf(timeSplit[ 1 ])* 60 ;
} else if (timeSplit.length == 3 ){
hours = Integer.valueOf(timeSplit[ 0 ])* 60 * 60 ;
minutes = Integer.valueOf(timeSplit[ 1 ])* 60 ;
seconds = Integer.valueOf(timeSplit[ 2 ]);
} else {
logger.debug( "Fail to convert the time, {}" , time);
}
} catch (Exception e) {
logger.debug( "Fail to convert the time, {}" , time);
throw e;
}
return hours + minutes + seconds;
}
|
9.零点开始的秒数转时间 -->> HH-mm-ss
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
/**
* 零点开始的秒数转时间 -->> HH-mm-ss
* @param durationSeconds
* @return
*/
public static String getDuration( int durationSeconds){
int hours = durationSeconds /( 60 * 60 );
int leftSeconds = durationSeconds % ( 60 * 60 );
int minutes = leftSeconds / 60 ;
int seconds = leftSeconds % 60 ;
StringBuffer sBuffer = new StringBuffer();
sBuffer.append(addZeroPrefix(hours));
sBuffer.append( ":" );
sBuffer.append(addZeroPrefix(minutes));
sBuffer.append( ":" );
sBuffer.append(addZeroPrefix(seconds));
return sBuffer.toString();
}
public static String addZeroPrefix( int number){
if (number < 10 )
return "0" +number;
else
return "" +number;
}
|
10.比较两个日期相差的秒数
1
2
3
4
5
6
7
8
9
10
11
|
/**
* 比较两个日期相差的秒数
* @param startDate
* @param endDate
* @return
*/
public static int getTimeSeconds(Date startDate,Date endDate) {
long a = endDate.getTime();
long b = startDate.getTime();
return ( int )((a - b) / 1000 );
}
|
11.判断两个时间段是否存在交集
1
2
3
4
5
6
7
8
9
10
11
|
/**
* 比较两个日期相差的秒数
* @param startDate
* @param endDate
* @return
*/
public static int getTimeSeconds(Date startDate,Date endDate) {
long a = endDate.getTime();
long b = startDate.getTime();
return (int)((a - b) / 1000);
}
|
12.获取指定日期是星期几(1-7分别代表周一至周日)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
/**
* 获取指定日期是星期几(1-7分别代表周一至周日)
* @return
*/
public static int DayOfWeek(Date date){
Calendar now = Calendar.getInstance();
now.setTime(date);
boolean isFirstDay = (now.getFirstDayOfWeek() == Calendar.SUNDAY);
int weekday = now.get(Calendar.DAY_OF_WEEK);
if (isFirstDay){
weekday = weekday - 1 ;
if (weekday == 0 ){
weekday = 7 ;
}
}
return weekday;
}
|
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持服务器之家!
原文链接:http://www.cnblogs.com/liliangel/p/5292944.html