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

网友投稿 227 2023-06-25


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

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

1.字符串转换为日期

/**

* 字符串转换为日期

* @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.时间戳转日期

/**

* 时间戳转日期

* @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.日期格式化成字符串

/**

* 日期格式化成字符串

* @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

/**

* 获取指定日期之前或之后的日期

* @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.获取指定日期之前或之后的日期 ,时分秒为当前的

/**

* 获取指定日期之前或之后的日期

* @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类型的时间字符串 转换成 时、分

/**

* 将time类型的时间字符串 转换成 时、分

* HH-mm-ss -->> HH-mm

* @param time

* @return

*/

public static String timeToHHMM(String time){

return time.substring(0, time.length() - 3);

}

7.获取某个日期的时、分

/**

* 获取某个日期的时、分

* @param date

* @return HH-mm

*/

public static String getHM(Date date){

Calendar ca = Calendar.getInstance();

ca.setTime(date);

Integer hour = ca.get(Calendar.HOUlowDNfR_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类型的时间字符串 -->> 零点开始的秒数

/**

* time类型的时间字符串 -->> 零点开始的秒数

* @param time HH-mm / HH-mm-ss

* @retuhttp://rn

*/

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

/**

* 零点开始的秒数转时间 -->> 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.比较两个日期相差的秒数

/**

* 比较两个日期相差的秒数

* @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.判断两个时间段是否存在交集

/**

* 比较两个日期相差的秒数

* @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-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;

}


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Centos6.5搭建java开发环境配置详解
下一篇:Mybatis分页插件PageHelper的使用详解
相关文章

 发表评论

暂时没有评论,来抢沙发吧~