gpt4 book ai didi

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

转载 作者:qq735679552 更新时间:2022-09-29 22:32:09 28 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章详解JAVA常用的时间操作【实用】由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

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

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 。

最后此篇关于详解JAVA常用的时间操作【实用】的文章就讲到这里了,如果你想了解更多关于详解JAVA常用的时间操作【实用】的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com