详解JAVA常用的时间操作【实用】

2025-05-29 0 82

项目中经常有对时间进行处理的需求,下面是一些常用的操作整理,方便以后再次使用以及做相关复习。

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;

}

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持快网idc!

原文链接:http://www.cnblogs.com/liliangel/p/5292944.html

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

快网idc优惠网 建站教程 详解JAVA常用的时间操作【实用】 https://www.kuaiidc.com/119647.html

相关文章

发表评论
暂无评论