java小工具util系列1:日期和字符串转换工具

简介: java小工具util系列1:日期和字符串转换工具

1.jpg

1.日期毫秒数转日期字符串

@Test
public void millisecondsToDate() throws ParseException {
   
   SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
   System.out.println(simpleDateFormat.format(new Date(1639381826)));
}

2.检测一个字符串是否是时间格式

/**
*  检测一个字符串是否是时间格式
   * @param str 请求字符串
   * @author liudz
   * @date 2019/12/17
   * @return 执行结果
   **/
public static boolean isValidDate(String str) {
   
    boolean convertSuccess = true;
    // 指定日期格式为四位年/两位月份/两位日期,注意yyyy/MM/dd区分大小写;设置lenient为false. 否则SimpleDateFormat会比较宽松地验证日期,比如2007/02/29会被接受,并转换成2007/03/01
    SimpleDateFormat format = new SimpleDateFormat("HH:mm");
    try {
   
        format.setLenient(false);
        format.parse(str);
    } catch (Exception e) {
   
        convertSuccess = false;
    }
    return convertSuccess;
}

3.Long转String(时间毫秒数转日期格式字符串)

//Long转String(时间毫秒数转日期格式字符串)
@Test
void millisecondsTransformString()  {
   
    long milliSecond = 1570650412089L;
    Date date = new Date();
    date.setTime(milliSecond);
    System.out.println(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(date));   
    //2019-10-10 03:46:52
}

4.String转Long(日期格式字符串转为时间毫秒数)

//String转Long(日期格式字符串转为时间毫秒数)
@Test
void stringTransformMilliseconds()  {
   
    SimpleDateFormat sdf =  new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    String time = "2020-10-11 10:42:01";
    Date date = null;
    try {
   
        date = sdf.parse(time);
    } catch (ParseException e) {
   
        e.printStackTrace();
    }
    long time1 = date.getTime();
    System.out.println("时间毫秒数:" + time1);     
    //输出:时间毫秒数:1602384121000
}

5.Date转String(日期转日期格式字符串)

//Date转String(日期转日期格式字符串)
@Test
void dateTransformString()  {
   
    SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    Date date=new Date();
    String format = sdf.format(date);
    System.out.println("当前日期格式字符串:" + format);    
    //当前日期格式字符串:2022-05-02 16:41:52
    }

6.String转Date(日期格式字符串转日期)

//String转Date(日期格式字符串转日期)
@Test
void stringTransformDate()  {
   
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    String string = "2020-10-14 10:10:00";
    Date date = null;
    try{
   
        date = sdf.parse(string);
    }catch (Exception e){
   
        e.printStackTrace();
    }
    System.out.println("日期:" + date);   
    //日期:Wed Oct 14 10:10:00 CST 2020
}

7.Long转Date(时间毫秒数转日期)

//Long转Date(时间毫秒数转日期)
@Test
void millisecondsTransformDate()  {
   
    long milliSecond = 1570650412089L;
    Date date = new Date();
    date.setTime(milliSecond);
    System.out.println("日期:"+ date);   
    //日期:Thu Oct 10 03:46:52 CST 2019
}

8.Date转Long(日期转为时间毫秒数)

//Date转Long(日期转为时间毫秒数)
@Test
void dateTransformMilliseconds()  {
   
    Date date = new Date();
    long time = date.getTime();
    System.out.println("时间毫秒数:" + time);     
    //输出:时间毫秒数:1651482816418
}

9.获取当前的开始时间

/**
* author:Yu Yang
* 获取当前的开始时间
*/
public static Date getDayBegin(){
   
   Calendar cal = new GregorianCalendar();
   cal.set(Calendar.HOUR_OF_DAY, 0);
   cal.set(Calendar.MINUTE, 0);
   cal.set(Calendar.SECOND, 0);
   cal.set(Calendar.MILLISECOND, 0);

   return cal.getTime();
}

结果展示

System.out.println(getDayBegin());  //Thu Jun 23 00:00:00 CST 2022

10.获取当前的结束时间

/**
* author:Yu Yang
* 获取当前的结束时间
*/
public static Date getDayEnd(){
   
   Calendar cal = new GregorianCalendar();
   cal.set(Calendar.HOUR_OF_DAY, 23);
   cal.set(Calendar.MINUTE, 59);
   cal.set(Calendar.SECOND, 59);

   return cal.getTime();
}

结果展示

System.out.println(getDayEnd());    //Thu Jun 23 23:59:59 CST 2022

11.获取昨天的开始时间

/**
 * author:Yu Yang
 * 获取昨天的开始时间
 */
public static Date getYestodayBegin(){
   
    Calendar cal = new GregorianCalendar();
    cal.setTime(getDayBegin());
    cal.add(Calendar.DAY_OF_MONTH, -1);
    return cal.getTime();
}

结果展示

System.out.println(getYestodayBegin()); //Wed Jun 22 00:00:00 CST 2022

12.获取昨天的结束时间

/**
* author:Yu Yang
 * 获取昨天的结束时间
 */
public static Date getYestodayEnd(){
   
    Calendar cal = new GregorianCalendar();
    cal.setTime(getDayEnd());
    cal.add(Calendar.DAY_OF_MONTH, -1);

    return cal.getTime();
}

结果展示

System.out.println(getYestodayEnd());   //Wed Jun 22 23:59:59 CST 2022

13.获取明天的开始时间

/**
*author:Yu Yang
* 获取明天的开始时间
*/
public static Date getTomorrowBegin(){
   
   Calendar cal = new GregorianCalendar();
   cal.setTime(getDayBegin());
   cal.add(Calendar.DATE, 1);
   return cal.getTime();
}

结果展示

 System.out.println(getTomorrowBegin()); //Fri Jun 24 00:00:00 CST 2022

14.获取明天的结束时间

/**
* author:Yu Yang
* 获取明天的结束时间
*/
public static Date getTomorrowEnd(){
   
   Calendar cal = new GregorianCalendar();
   cal.setTime(getDayEnd());
   cal.add(Calendar.DATE, 1);
   return cal.getTime();
}

结果展示

System.out.println(getTomorrowEnd());   //Fri Jun 24 23:59:59 CST 2022

15.获取指定日期的第二天同一时间

/**
* author:Yu Yang
* 获取指定日期的第二天同一时间
*/
public static Date getTSpecifyDateBegin(Date date){
   
   Calendar cal = new GregorianCalendar();
   cal.setTime(date);
   cal.add(Calendar.DAY_OF_MONTH, 1);
   return cal.getTime();
}

结果展示

System.out.println(getTSpecifyDateBegin(new Date()));   //Fri Jun 24 11:33:54 CST 2022

16.获取指定日期0时0分0秒

/**
 * author:Cui Yang
 * 获取指定日期0时0分0秒
 */
public static Date getDateBegin(Date date) {
   
    Calendar calendar = Calendar.getInstance();
    calendar.setTime(date);
    calendar.set(Calendar.HOUR_OF_DAY, 0);
    calendar.set(Calendar.MINUTE, 0);
    calendar.set(Calendar.SECOND, 0);
    calendar.set(Calendar.MILLISECOND,0);
    return calendar.getTime();
}

结果展示

System.out.println(getDateBegin(new Date()));   //Thu Jun 23 00:00:00 CST 2022

17.获取指定日期23时59分59秒

/**
* author:Cui Yang
* 获取指定日期23时59分59秒
*/
public static Date getDateEnded(Date date) {
   
   Calendar calendar = Calendar.getInstance();
   calendar.setTime(date);
   calendar.set(Calendar.HOUR_OF_DAY, 23);
   calendar.set(Calendar.MINUTE, 59);
   calendar.set(Calendar.SECOND, 59);
   return calendar.getTime();
}

结果展示

System.out.println(getDateEnded(new Date()));   //Thu Jun 23 23:59:59 CST 2022

18.获取上个月的开始时间

/**
* author:Yu Yang
* 获取上个月的开始时间
*/
public static Date getBeforeFirstMonth(){
   

   Calendar calendar = Calendar.getInstance();// 获取当前日期
   calendar.add(Calendar.YEAR, 0);
   calendar.add(Calendar.MONTH, -1);
   calendar.set(Calendar.DAY_OF_MONTH, 1);// 设置为1号,当前日期既为本月第一天
   calendar.set(Calendar.HOUR_OF_DAY, 0);
   calendar.set(Calendar.MINUTE, 0);
   calendar.set(Calendar.SECOND, 0);
   calendar.set(Calendar.MILLISECOND, 0);
   return calendar.getTime();
    }

结果展示

System.out.println(getBeforeFirstMonth());  //Sun May 01 00:00:00 CST 2022

19.获取上个月的结束时间

/**
* author:Yu Yang
* 获取上个月的结束时间
*/
public static Date getBeforeLastMonth(){
   
   Calendar calendar = Calendar.getInstance();// 获取当前日期
   calendar.add(Calendar.YEAR, 0);
   calendar.add(Calendar.MONTH, -1);
   calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMaximum(Calendar.DAY_OF_MONTH));// 获取当前月最后一天
   calendar.set(Calendar.HOUR_OF_DAY, 23);
   calendar.set(Calendar.MINUTE, 59);
   calendar.set(Calendar.SECOND, 59);
   calendar.set(Calendar.MILLISECOND, 999);
   return calendar.getTime();
}

结果展示

System.out.println(getBeforeLastMonth());   //Tue May 31 23:59:59 CST 2022

20.获取指定日期,下个月的第一天

/**
 * 获取指定日期,下个月的第一天
 */
public static Date getNextMonthBegin(Date date){
   
    Calendar calendar = Calendar.getInstance();
    calendar.setTime(date);
    calendar.add(Calendar.YEAR, 0);
    calendar.add(Calendar.MONTH, 1);
    calendar.set(Calendar.DAY_OF_MONTH, 1);// 获取当前月最后一天
    calendar.set(Calendar.HOUR_OF_DAY, 0);
    calendar.set(Calendar.MINUTE, 0);
    calendar.set(Calendar.SECOND, 0);
    calendar.set(Calendar.MILLISECOND, 0);
    return calendar.getTime();
}

结果展示

System.out.println(getNextMonthBegin(new Date()));  //Fri Jul 01 00:00:00 CST 2022

21.获取间隔多少天的截至时间字符串

/**
* author:Yu Yang
* 获取间隔多少天的截至时间字符串
*/
public static String getDelDirDateStr(Integer interval){
   
   SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd");
   Calendar calendar = Calendar.getInstance();// 获取当前日期
   calendar.add(Calendar.DAY_OF_MONTH, 0 - interval);// 获取当前月最后一天
   return dateFormat.format(calendar.getTime());
}

结果展示

System.out.println(getDelDirDateStr(30));   //20220524

22.获取间隔多少天的截至时间date

/**
 * author:Yu Yang
 * 获取间隔多少天的截至时间date
 */
public static Date getDelDirDate(Integer interval){
   
    Calendar calendar = Calendar.getInstance();// 获取当前日期
    calendar.add(Calendar.DAY_OF_MONTH, 0 - interval);// 获取当前月最后一天
    return calendar.getTime();
}

结果展示

System.out.println(getDelDirDate(30));  //Tue May 24 11:33:54 CST 2022

23.获取两个日期之间的所有日期的开始时间集合

/**
* 获取两个日期之间的所有日期的开始时间集合
* 返回Date的List
*/
public static List<Date> getBetweenDates(Date start, Date end){
   
   List<Date> result = new ArrayList<>();
   Calendar tempStart = Calendar.getInstance();
   tempStart.setTime(start);
   tempStart.add(Calendar.DAY_OF_YEAR,1);

   Calendar tempEnd = Calendar.getInstance();
   tempEnd.setTime(end);

   while (tempStart.before(tempEnd)){
   
       result.add(tempStart.getTime());
       tempStart.add(Calendar.DAY_OF_YEAR, 1);
   }
   return result;
}

结果展示

//获取两个日期之间的所有日期的开始时间集合
Date beginDate = new Date();
beginDate.setTime(1652976000000L);  //2022-05-20 00:00:00
Date endDate = new Date();
endDate.setTime(1655654400000L);  //2022-06-20 00:00:00
System.out.println(getBetweenDates(beginDate, endDate));    //[Sat May 21 00:00:00 CST 2022, Sun May 22 00:00:00 CST 2022, Mon May 23 00:00:00 CST 2022, Tue May 24 00:00:00 CST 2022, Wed May 25 00:00:00 CST 2022, Thu May 26 00:00:00 CST 2022, Fri May 27 00:00:00 CST 2022, Sat May 28 00:00:00 CST 2022, Sun May 29 00:00:00 CST 2022, Mon May 30 00:00:00 CST 2022, Tue May 31 00:00:00 CST 2022, Wed Jun 01 00:00:00 CST 2022, Thu Jun 02 00:00:00 CST 2022, Fri Jun 03 00:00:00 CST 2022, Sat Jun 04 00:00:00 CST 2022, Sun Jun 05 00:00:00 CST 2022, Mon Jun 06 00:00:00 CST 2022, Tue Jun 07 00:00:00 CST 2022, Wed Jun 08 00:00:00 CST 2022, Thu Jun 09 00:00:00 CST 2022, Fri Jun 10 00:00:00 CST 2022, Sat Jun 11 00:00:00 CST 2022, Sun Jun 12 00:00:00 CST 2022, Mon Jun 13 00:00:00 CST 2022, Tue Jun 14 00:00:00 CST 2022, Wed Jun 15 00:00:00 CST 2022, Thu Jun 16 00:00:00 CST 2022, Fri Jun 17 00:00:00 CST 2022, Sat Jun 18 00:00:00 CST 2022, Sun Jun 19 00:00:00 CST 2022]

24.获取两个日期之间所有月份的集合

/**
* 获取两个日期之间所有月份的集合
*/
public static List<Date> getBetweenMonth(Date start, Date end){
   
   List<Date> result = new ArrayList<>();
   Calendar tempStart = Calendar.getInstance();
   tempStart.setTime(start);
   tempStart.set(tempStart.get(Calendar.YEAR), tempStart.get(Calendar.MONTH), 1);

   Calendar tempEnd = Calendar.getInstance();
   tempEnd.setTime(end);
   tempEnd.set(tempEnd.get(Calendar.YEAR), tempEnd.get(Calendar.MONTH), 2);

   while (tempStart.before(tempEnd)){
   
       result.add(tempStart.getTime());
       tempStart.add(Calendar.MONTH,1);
   }
   return result;
}

结果展示

System.out.println(getBetweenMonth(beginDate, endDate));    //[Sun May 01 00:00:00 CST 2022, Wed Jun 01 00:00:00 CST 2022]

25.判断当前时间是否在数据库起止时间范围内,是 ,返回true;否,返回false

主要用来判断类似这种时间,比如判断当前时间是否在12:00-15:00之间

/**
 * 判断当前时间是否在数据库起止时间范围内,是 ,返回true;否,返回false
 * @param dbBeginDate 开始日期
 * @param dbEndDate 结束日期
 * @return 结果
 */
public static boolean determineWhetherItMatchesTheTime(Date dbBeginDate, Date dbEndDate) {
    logger.info("-determineWhetherItMatchesTheTime-dbBeginDate:{},dbEndDate:{}", dbBeginDate, dbEndDate);
    boolean flag = false;
    // 获取当前日期和时间
    Date currentDate = new Date();
    // 将日期转换为LocalTime对象
    LocalTime localTime = currentDate.toInstant().atZone(ZoneId.systemDefault()).toLocalTime();
    logger.info("当前时间:{}", localTime);
    LocalTime dbBeginLocalTime = dbBeginDate.toInstant().atZone(ZoneId.systemDefault()).toLocalTime();
    LocalTime dbEndLocalTime = dbEndDate.toInstant().atZone(ZoneId.systemDefault()).toLocalTime();
    logger.info("dbBeginLocalTime:{},dbEndLocalTime:{}", dbBeginLocalTime, dbEndLocalTime);
    if (localTime.isBefore(dbEndLocalTime) && localTime.isAfter(dbBeginLocalTime)) {
        flag = true;
    }
    return flag;
}

26.获取2周前的时间字符串,打印输出20231205类似这种

/**
 * 获取2周前的时间字符串
 * @return 时间字符串
 */
public static String getDelDirDateStr(){
    SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd");
    // 获取当前日期
    Calendar calendar = Calendar.getInstance();
    // 获取2周前的日期
    calendar.add(Calendar.WEEK_OF_YEAR, -2);
    return dateFormat.format(calendar.getTime());
}

27.传递日期格式及日期获取xx天前的时间字符串,打印输出20231205类似这种

SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd");
getDelDirDateStrBydateFormatAndDays(dateFormat, Calender.DAT_OF_MONTH, -14);
/**
 *传递日期格式及日期获取xx天前的时间字符串
 * @param dateFormat 日期格式字符串
 * @param intervalType 日/周/年  这种的时间周期间隔
 * @param amount 量,比如天数
 * @return 时间字符串
 */
public static String getDelDirDateStrBydateFormatAndDays(SimpleDateFormat dateFormat, int intervalType, int amount){
    // 获取当前日期
    Calendar calendar = Calendar.getInstance();
    calendar.add(intervalType, amount);
    return dateFormat.format(calendar.getTime());
}

本人其他文章链接

1.java小工具util系列1:日期毫秒数转日期字符串
https://blog.csdn.net/a924382407/article/details/121955349

2.java小工具util系列2:获取字符modelStr在字符串str中第count次出现时的下标
https://blog.csdn.net/a924382407/article/details/121955455

3.java小工具util系列3:正则表达式匹配:匹配不包含@特殊字符的字符串
https://blog.csdn.net/a924382407/article/details/121955737

4.java小工具util系列4:String[] 转 List< Integer >
https://blog.csdn.net/a924382407/article/details/121956201

5.java小工具util系列5:基础工具代码(Msg、PageResult、Response、常量、枚举)
https://blog.csdn.net/a924382407/article/details/120952865

6.java小工具util系列6:java执行string返回boolean结果
https://blog.csdn.net/a924382407/article/details/117124536

7.java小工具util系列7:集合中实体对象转换 list中Enrey转Dto
https://blog.csdn.net/a924382407/article/details/121957545

8.java小工具util系列8:JSONObject获取key
https://blog.csdn.net/a924382407/article/details/121957607

9.java小工具util系列9:检测一个字符串是否是时间格式
https://blog.csdn.net/a924382407/article/details/123948881

10.java小工具util系列10:时间毫秒数、时间格式字符串、日期之间相互转化
https://blog.csdn.net/a924382407/article/details/124581851

目录
相关文章
|
22小时前
|
Java API
Java的日期类都是怎么用的
【10月更文挑战第1天】本文介绍了 Java 中处理日期和时间的三个主要类:`java.util.Date`、`java.util.Calendar` 和 `java.time` 包下的新 API。`Date` 类用于表示精确到毫秒的瞬间,可通过时间戳创建或获取当前日期;`Calendar` 抽象类提供丰富的日期操作方法,如获取年月日及时区转换;`java.time` 包中的 `LocalDate`、`LocalTime`、`LocalDateTime` 和 `ZonedDateTime` 等类则提供了更为现代和灵活的日期时间处理方式,支持时区和复杂的时间计算。
24 13
|
2天前
|
SQL 安全 Java
JAVA代码审计SAST工具使用与漏洞特征
JAVA代码审计SAST工具使用与漏洞特征
13 1
|
2天前
|
SQL Java 索引
java小工具util系列2:字符串工具
java小工具util系列2:字符串工具
7 2
java中的日期时间类
java中获取日期时间,util包中的Date类,直接new一个对象打印他就可以,但是格式是外国的,对于我们来说肯定是希望有些格式的。
|
存储 安全 Java
11.4 Java 日期和时间类
我们先来看一些基本概念,然后再介绍 Java 的日期和时间 API。关于日期和时间,有一些基本概念,包括时区、时刻、纪元时、年历等。 全球一共有 24 个时区,英国格林尼治是 0 时区,北京是东八区,也就是说格林尼治凌晨 1 点,北京是早上 9 点。0 时区的时间也称为 GMT+0 时间,GMT 是格林尼治标准时间,北京的时间就是 GMT+8:00。 所有计算机系统内部都用一个整数表示时刻,这个整数是距离格林尼治标准时间1970年1月1日0时0分0秒的毫秒数。为什么要用这个时间呢?更多的是历史原因。 格林尼治标准时间 1970年1月1日0时0分0秒也被称为 Epoch Time(纪元时)
271 0
|
存储 Java API
Java Review (二十一、基础类库----日期、时间类)
Java Review (二十一、基础类库----日期、时间类)
130 0
|
Java 数据库连接 数据库
Java 8 新特性(三)新的日期时间类
老日期类 一说到在Java中处理日期和时间,我们首先想到的肯定是java.util.Date类。确实,由于很多教材和文献都比较老,所以大多数人学习Java的时候使用的都是这个类。
971 0
|
3天前
|
安全 Java 调度
Java编程时多线程操作单核服务器可以不加锁吗?
Java编程时多线程操作单核服务器可以不加锁吗?
16 2
|
7天前
|
存储 缓存 Java
java线程内存模型底层实现原理
java线程内存模型底层实现原理
java线程内存模型底层实现原理
|
12天前
|
缓存 Java 应用服务中间件
Java虚拟线程探究与性能解析
本文主要介绍了阿里云在Java-虚拟-线程任务中的新进展和技术细节。