栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

工具类:字符串(String)、日期(Date)、日历(Calendar)互相转换,日期获取年月日时分秒

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

工具类:字符串(String)、日期(Date)、日历(Calendar)互相转换,日期获取年月日时分秒

目录
    • 一、来由
    • 二、说明
    • 三、实现
    • 四、测试
    • 五、测试结果
    • 六、注意

一、来由

每次遇到时间转换问题,总要去翻一翻浏览器,虽然很简单,但就是记不住,于是抽时间自己写了一个比较常用的时间转换工具类,以后直接copy过来用,以后有空再补充一些新的内容。

二、说明

所有方法实现中的参数,都做了非空校验

三、实现
package com.example.bean;

import org.springframework.util.StringUtils;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;


public class DateCovertUtil {

    private DateCovertUtil(){};

    
    public static String dateToString(Date date){
        if (date == null){
            throw new RuntimeException("date参数为空");
        }
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        return sdf.format(date);
    }

    
    public static String dateToStringCustomizing(Date date,String formatString){
        if (date == null || StringUtils.isEmpty(formatString)){
            throw new RuntimeException("参数为空,参数date:"+date+"  formatString:"+formatString);
        }
        try {
            SimpleDateFormat sdf = new SimpleDateFormat(formatString);
            return sdf.format(date);
        }catch (Exception e){
            throw new RuntimeException("日期格式化设置错误:"+formatString);
        }
    }

    
    public static Date stringToDate(String dateStr) {
        if (StringUtils.isEmpty(dateStr)){
            throw new RuntimeException("日期字符串为空");
        }
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        Date date;
        try {
            date = sdf.parse(dateStr);
        }catch (ParseException e){
            throw new RuntimeException("字符串转日期异常,字符串:"+dateStr);
        }
        return date;
    }

    
    public static Date stringToDateCustomizing(String dateStr,String formatString) {
        if (StringUtils.isEmpty(dateStr) || StringUtils.isEmpty(formatString)){
            throw new RuntimeException("参数为空,dateStr:"+dateStr+" formatString:"+formatString);
        }
        SimpleDateFormat sdf = new SimpleDateFormat(formatString);
        Date date;
        try {
            date = sdf.parse(dateStr);
        }catch (ParseException e){
            throw new RuntimeException("自定义字符串转日期异常,字符串:"+dateStr+" 日期格式:"+formatString);
        }
        return date;
    }

    
    public static Calendar dateToCalendar(Date date) {
        if (date == null){
            throw new RuntimeException("date参数为空");
        }
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        return calendar;
    }

    
    public static Date calendarToDate(Calendar calendar) {
        if (calendar == null){
            throw new RuntimeException("calendar参数为空");
        }
        return calendar.getTime();
    }

    
    public static String calendarToString(Calendar calendar) {
        return dateToString(calendarToDate(calendar));
    }

    
    public static Calendar StringToCalendar(String dateString) {
        return dateToCalendar(stringToDate(dateString));
    }

    
    public static Map dateGetDetail(Date date){
        Map map = new HashMap<>();
        if (date == null){
            throw new RuntimeException("date参数为空");
        }
        Calendar calendar = dateToCalendar(date);
        if (calendar.get(Calendar.YEAR) != 0) { map.put("year", calendar.get(Calendar.YEAR)); }
        if (calendar.get(Calendar.MONTH) != 0) { map.put("month",calendar.get(Calendar.MONTH)+1); }
        if (calendar.get(Calendar.DATE) != 0) { map.put("day",calendar.get(Calendar.DATE)); }
        //12小时制
        if (calendar.get(Calendar.HOUR) != 0) { map.put("hour",calendar.get(Calendar.HOUR)); }
        if (calendar.get(Calendar.MINUTE) != 0) { map.put("minute",calendar.get(Calendar.MINUTE)); }
        if (calendar.get(Calendar.SECOND) != 0) { map.put("second",calendar.get(Calendar.SECOND)); }
        //24小时制
        if (calendar.get(Calendar.HOUR_OF_DAY) != 0) { map.put("hourOfDay",calendar.get(Calendar.HOUR_OF_DAY)); }
        //一周的第几天
        if (calendar.get(Calendar.DAY_OF_WEEK) != 0) { map.put("dayOfWeek",calendar.get(Calendar.DAY_OF_WEEK)); }
        return map;
    }

	
    public static long getCurrentTimeMillis(){
        return System.currentTimeMillis();
    }
}

四、测试
package com.example.bean;

import java.util.Calendar;
import java.util.Date;
import java.util.Map;

public class Test {
    public static void main(String[] args) {

        //参数准备
        Date date = new Date();
        Calendar calendar = Calendar.getInstance();
        String dateStr = "2021-10-11 20:19:37";

        //Date类型转String类型
        String string1 = DateCovertUtil.dateToString(date);
        System.out.println("Date类型转String类型:n" + string1);

        //Date类型转String类型,自定义转换格式
        String string2 = DateCovertUtil.dateToStringCustomizing(date, "yyyy-MM-dd");
        System.out.println("nDate类型转String类型,自定义转换格式:n" + string2);

        //String类型转Date类型
        Date date1 = DateCovertUtil.stringToDate(dateStr);
        System.out.println("nString类型转Date类型:n"+date1);

        //String类型转Date类型,自定义转换格式
        Date date2 = DateCovertUtil.stringToDateCustomizing(dateStr, "yyyy-MM-dd");
        System.out.println("nString类型转Date类型,自定义转换格式:n" + date2);

        //Date类型转Calendar类型
        Calendar calendar1 = DateCovertUtil.dateToCalendar(date);
        System.out.println("nDate类型转Calendar类型:n" + calendar1);

        //Calendar类型转Date类型
        Date date3 = DateCovertUtil.calendarToDate(calendar);
        System.out.println("nCalendar类型转Date类型:n" + date3);

        //Date类型获取年月日时分秒
        Map dateMap = DateCovertUtil.dateGetDetail(date);
        System.out.println("nDate类型获取年月日时分秒:n" + dateMap);

    }

}

五、测试结果

六、注意

阿里规范中要求代码禁用 static 修饰 SimpleDateFormat,因为SimpleDateFormat是线程不安全的,所以涉及到了多线程可以使用DateTimeFormatter
具体请参考链接: https://blog.csdn.net/afreon/article/details/111878486

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/318258.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号