Java日期时间格式化操作DateUtils 的整理

Java日期时间格式化操作DateUtils 的整理

直接上代码,总结了开发过程中经常用到的日期时间格式化操作!

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.concurrent.TimeUnit;

/**
 * ClassName: DateUtils <br/>
 * Description:时间操作工具类
 */
public class DateUtils {

  private static final String[] UNIT_DESC = new String[]{"天", "小时", "分钟", "秒"};

  /**
   * 获得当前系统时间,格式为yyyyMMdd
   *
   * @return 格式化后的时间
   */
  public static String currentYYYYMMDD() {
    return getStrByDate(new Date(), "yyyyMMdd");
  }

  /**
   * 获得当前系统时间,格式为HHmmss
   *
   * @return 格式化后的时间
   */
  public static String currentHHMMSS() {
    return getStrByDate(new Date(), "HHmmss");
  }

  /**
   * 获得当前系统时间,格式为yyyyMMddHHmmss
   *
   * @return 格式化后的时间
   */
  public static String currentYYYYMMDDHHmmss() {
    return getStrByDate(new Date(), "yyyyMMddHHmmss");
  }

  /**
   * 根据给定的字符串如:yyyy-MM-dd HH:mm:ss,(必须是这种格式) 返回一个日期日期形式
   *
   * @param strDate 要抛析的字符串,且字符串的形式必须:2007-09-10 07:00:00
   * @return 将字符串抛析成日期的格式返回
   * @throws ParseException 解析 format 字段失败
   */
  public static java.util.Date getDateByStr(String strDate, String format) throws ParseException {
    assert strDate != null && format != null;
    SimpleDateFormat simpleDateFormat = new SimpleDateFormat(format);
    return simpleDateFormat.parse(strDate);
  }

  /**
   * 根据给定的日期,返回给定的字符串, 返回 字符串的形式是:yyyy-MM-dd HH:mm:ss
   *
   * @param date 要格式化的日期
   * @return 将日期格式化后返回的字符串,以这中格式返回:yyyy-MM-dd HH:mm:ss
   */
  public static String getStrByDate(Date date, String format) {
    assert date != null && format != null;
    SimpleDateFormat simpleDateFormat = new SimpleDateFormat(format);
    return simpleDateFormat.format(date);
  }

  /**
   * 得到当前时间
   *
   * @return 当前时间
   */
  public static Date getDayOfMonth() {
    Calendar now = Calendar.getInstance();
    return now.getTime();
  }

  /**
   * 得到每月第一天
   *
   * @param date 日期
   * @return 日期月份的第一天
   */
  public static Date getFirstDayOfMonth(Date date) {
    Calendar nowday = Calendar.getInstance();
    nowday.setTime(date);
    nowday.set(Calendar.DATE, 1);// 把日期设置为当月第一天
    return nowday.getTime();
  }

  /**
   * 得到每月最后一天
   *
   * @param date 日期
   * @return 日期月份最后一天
   */
  public static Date getLastDayOfMonth(Date date) {
    Calendar nowday = Calendar.getInstance();
    nowday.setTime(date);
    nowday.set(Calendar.DATE, 1);// 把日期设置为当月第一天
    nowday.roll(Calendar.DATE, -1);// 日期回滚一天,也就是最后一天
    return nowday.getTime();
  }

  /**
   * 获取当前年份 格式:yyyy
   *
   * @param date 当前时间
   * @return year
   */
  public static String getCurrYear(Date date) {
    Calendar calendar = Calendar.getInstance();
    calendar.setTime(date);
    SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy");
    Date currYear = calendar.getTime();
    return String.valueOf(dateFormat.format(currYear));
  }

  /**
   * 获取当前月份 格式:MM
   *
   * @param date 当前时间
   * @return Date
   */
  public static String getCurrMonth(Date date) {
    Calendar calendar = Calendar.getInstance();
    calendar.setTime(date);
    SimpleDateFormat dateFormat = new SimpleDateFormat("MM");
    Date currMonth = calendar.getTime();
    return String.valueOf(dateFormat.format(currMonth));
  }

  /**
   * 得到此日期的最后一天
   *
   * @param d 日期
   * @return 最后一天
   */
  public static Date getLastDayByDate(Date d) {
    Calendar newday = Calendar.getInstance();
    newday.setTime(d);
    int lastday;
    int month = newday.get(Calendar.MONTH);
    do {
      lastday = newday.get(Calendar.DAY_OF_MONTH);
      newday.add(Calendar.DAY_OF_MONTH, 1);
    } while (newday.get(Calendar.MONTH) == month);
    newday.set(Calendar.MONTH, month);

    newday.set(Calendar.DAY_OF_MONTH, lastday);
    return newday.getTime();
  }

  /**
   * 将 yyyyMMdd 的字符窜 转化成 yyyy-MM-dd
   *
   * @param dateString yyyyMMdd格式的日期
   * @return yyyy-MM-dd格式的日期
   * @throws ParseException
   */
  public static String formatyyyyMMdd(String dateString) throws ParseException {
    SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMdd");
    Date date = simpleDateFormat.parse(dateString);
    SimpleDateFormat formatStr = new SimpleDateFormat("yyyy-MM-dd");
    return formatStr.format(date);
  }

  /**
   * 将 yyyyMMdd 的字符窜 转化成 yyyy-MM-dd HH:mm:ss
   *
   * @param dateString
   * @return
   * @throws ParseException
   */
  public static String formatyyyyMMddHHmmss(String dateString) throws ParseException {
    SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMddHHmmss");
    Date date = simpleDateFormat.parse(dateString);
    SimpleDateFormat formatStr = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    return formatStr.format(date);
  }

  /**
   * 获取当前年份 格式:yyyy
   *
   * @return Date
   */
  public static int getCurrYear() {
    Calendar calendar = Calendar.getInstance();
    SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy");
    Date currYearFirst = calendar.getTime();
    return Integer.valueOf(dateFormat.format(currYearFirst));
  }

  /**
   * 获取当前时间前三月
   *
   * @return Date
   */
  public static Date getLastThreeMonths() {
    Calendar calendar = Calendar.getInstance();

    calendar.add(Calendar.MONTH, -3);
    calendar.add(Calendar.DAY_OF_MONTH, 1);
    return calendar.getTime();
  }

  /**
   * 获取当前时间前一个月
   *
   * @return Date
   */
  public static Date getLastOneMonths() {
    Calendar calendar = Calendar.getInstance();

    calendar.add(Calendar.MONTH, -1);
    calendar.add(Calendar.DAY_OF_MONTH, 1);
    return calendar.getTime();
  }

  /**
   * 获取当前时间前六个月
   *
   * @return Date
   */
  public static Date getLastSixMonths() {
    Calendar calendar = Calendar.getInstance();

    calendar.add(Calendar.MONTH, -6);
    calendar.add(Calendar.DAY_OF_MONTH, 1);
    return calendar.getTime();
  }

  /**
   * 获取某年第一天日期
   *
   * @param year 年份
   * @return Date
   */
  public static Date getCurrYearFirst(int year) {
    Calendar calendar = Calendar.getInstance();
    calendar.clear();
    calendar.set(Calendar.YEAR, year);
    return calendar.getTime();
  }

  /**
   * 获取某年最后一天日期
   *
   * @param year 年份
   * @return Date
   */
  public static Date getCurrYearLast(int year) {
    Calendar calendar = Calendar.getInstance();
    calendar.clear();
    calendar.set(Calendar.YEAR, year);
    calendar.roll(Calendar.DAY_OF_YEAR, -1);
    return calendar.getTime();
  }

  /**
   * 格式化时间
   *
   * @param date  时间
   * @param format 格式化模板
   * @return 格式化后的时间
   */
  public static String date2Str(Date date, String format) {
    return getStrByDate(date, format);
  }

/**
 * 获得指定日期的前一天 yyyy-MM-dd
 * @param date
 * @return
 */
public static String getSpecifiedDayBefore(Date date, String dateFormat){
  if (date == null) return null;
  Calendar c = Calendar.getInstance();
  c.setTime(date);
  int day=c.get(Calendar.DATE);
  c.set(Calendar.DATE,day-1);

  String dayBefore=new SimpleDateFormat(dateFormat).format(c.getTime());
  return dayBefore;
}

/**
 * 获得指定日期的后一天 yyyy-MM-dd
 *
 * @param date
 * @return
 */
public static String getSpecifiedDayAfter(Date date, String dateFormat) {
  if (date == null) return null;
  Calendar c = Calendar.getInstance();
  c.setTime(date);
  int day = c.get(Calendar.DATE);
  c.set(Calendar.DATE, day + 1);
  String dayAfter = new SimpleDateFormat(dateFormat).format(c.getTime());
  return dayAfter;
}

  /**
   * 格式化持续时间<br/>
   * 将持续时间,格式化为 xx天xx小时xx分钟xx秒 如果 "xx" 为0 自动缺省。
   *
   * @param seconds 持续时间,单位(秒)
   * @return 格式化后的字符串
   * @see TimeUnit 时间单位转换工具
   * @since 1.5
   */
  public static String convertSeconds2Str(long seconds) {
    StringBuilder sb = new StringBuilder();
    long[] date = {TimeUnit.SECONDS.toDays(seconds), TimeUnit.SECONDS.toHours(seconds) % 24, TimeUnit.SECONDS.toMinutes(seconds) % 60, TimeUnit.SECONDS.toSeconds(seconds) % 60};
    for (int i = 0; i < date.length; i++) {
      long l = date[i];
      if (l > 0) sb.append(l).append(UNIT_DESC[i]);
    }
    return sb.toString();
  }

  /**
   * 格式化持续时间
   * 将持续时间,格式化为 xx天xx小时xx分钟xx秒 如果 "xx" 为0 自动缺省。
   *
   * @param seconds 持续时间,单位(分钟)
   * @return 格式化后的字符串
   * @see TimeUnit 时间单位转换工具
   * @since 1.5
   */
  public static String convertMinute2Str(long minute) {
    StringBuilder sb = new StringBuilder();
    long[] date = {TimeUnit.SECONDS.toHours(minute) % 24,TimeUnit.SECONDS.toMinutes(minute) % 60, TimeUnit.SECONDS.toSeconds(minute) % 60};
    for (int i = 0; i < date.length; i++) {
      long l = date[i];
      if (l > 0) sb.append(l).append(UNIT_DESC[i]);
    }
    return sb.toString();
  }
}

以上就是关于java 日期格式化操作的所有内容,如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

(0)

相关推荐

  • Java 中DateUtils日期工具类的实例详解

    Java 中DateUtils日期工具类的实例详解 介绍 在java中队日期类型的处理并不方便,通常都需要借助java.text.SimpleDateFormat类来实现日期类型 和字符串类型之间的转换,但是在jdk1.8之后有所改善,jdk1.7以及之前的版本处理日期类型并不方便, 可以借助Joda Time组件来处理,尤其是日期类型的一些数学操作就更是不方便. java代码 /** * * 日期工具类 java对日期的操作一直都很不理想,直到jdk1.8之后才有了本质的改变. * 如果使用的

  • Java日期时间格式化操作DateUtils 的整理

    Java日期时间格式化操作DateUtils 的整理 直接上代码,总结了开发过程中经常用到的日期时间格式化操作! import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.concurrent.TimeUnit; /** * ClassName: DateUtils <br/> * D

  • Java日期时间以及日期相互转换

    Java日期时间,以及相互转化,供大家参考,具体内容如下 package com.study.string; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.GregorianCalendar; public class DateBase { public static voi

  • Java日期时间使用方法汇总

    一.Java中的日期概述 日期在Java中是一块非常复杂的内容,对于一个日期在不同的语言国别环境中,日期的国际化,日期和时间之间的转换,日期的加减运算,日期的展示格式都是非常复杂的问题. 在Java中,操作日期主要涉及到一下几个类:  1.java.util.Date         类 Date 表示特定的瞬间,精确到毫秒.从 JDK 1.1 开始,应该使用 Calendar 类实现日期和时间字段之间转换,使用 DateFormat 类来格式化和分析日期字符串.Date 中的把日期解释为年.月

  • Java日期时间操作的方法

    本文实例为大家分享了java日期时间基本操作方法,供大家参考,具体内容如下 1. 获得Calendar实例:Calendar c = Calendar.getInstance(); 2. 定义日期/时间的格式:SimpleDateFormat sdf =new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 3. 把日期/时间转换成固定格式,使用SimpleDateFormat的format()方法: String datetime = sdf.for

  • java日期时间操作工具类

    本文实例为大家分享了java日期时间操作工具类,供大家参考,具体内容如下 虽然jdk1.8开始,加入了time包,里面对时区,本地化时间,格式化,以及时间等做了很好的封装,但仍然要写一个工具类.大家看着用.应该没有bug.如果发现了,请您一定告知,互相学习!好了,上代码: package com.wdy.tools.utils.timeutil; import java.text.DateFormat; import java.text.SimpleDateFormat; import java

  • Java日期时间及日期相互转换实现代码

    这篇文章主要介绍了Java日期时间及日期相互转换实现代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 java.util 包提供了 Date 类来封装当前的日期和时间. Date 类提供两个构造函数来实例化 Date 对象. 第一个构造函数使用当前日期和时间来初始化对象. Java日期时间,以及相互转化,供大家参考,具体内容如下 package com.study.string; import java.text.ParseException

  • Java 日期时间工具包–java.time的使用

    从JDK8开始,Java 提供了新的日期时间处理方法用来代替旧的日期类(Date).本章主要讲它们的用法以及和旧日期类互转. 日期和时间 Java 新的日期工具类在 java.time 包及子包中 ,日期类主要有 LocalDateTime.LocalDate.LocalTime ,这三个API类很相似,以下是常用API及说明. now() 静态方法,获取当前时间日期.示例:LocalDateTime.now() of() 静态方法,指定日期时间生成LoalDateTime.示例:LocalDa

  • Java日期时间类(Date、DateFormat、Calendar)解析

    目录 Date类 概述 常用方法 DateFormat类 构造方法 格式规则 常用方法 format方法 parse方法 练习 Calendar类 概念 获取方式 常用方法 get/set方法 add方法 getTime方法 Date类 概述 java.util.Date类 表示特定的瞬间,精确到毫秒. 继续查阅Date类的描述,发现Date拥有多个构造函数,只是部分已经过时,但是其中有未过时的构造函数可以把毫秒值转成日期对象. public Date():分配Date对象并初始化此对象,以表示

  • java日期时间格式化@JsonFormat与@DateTimeFormat的使用

    如果要使用 @JsonFormat 这个注解的话,需要在项目中添加 jackson 相关的依赖包; 因为 @JsonFormat 注解不是 Spring 自带的注解,所以使用该注解前需要添加 jackson 相关的依赖包.当然,如果是 SpringBoot 项目就不需要自己手动添加依赖了,因为在 spring-boot-start-web 下已经包含了 jackson 相关依赖. <!-- https://mvnrepository.com/artifact/com.fasterxml.jack

  • Java日期时间类及计算详解

    目录 1. Java中与日期相关的类 1.1 java.util包 ① Date类 ② Calendar 日历类 roll 设置Calendar的容错性 set 1.2 java.time包 ① LocalDate 本地日期类 ② LocalTime 本地时间类 ③ LocalDateTime 本地日期时间类 ④ Instant 类 ⑤ Period 类 ⑥ Duration 类 2. 时间间隔计算 2.1 Period与Duration类 2.1.1 Duration 2.1.2 Period

随机推荐