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

DateUtils封装

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

DateUtils封装

DateUtils
  • 基本知识
  • 封装

 psvm是 public static void main(String[] args)idea快捷键
 sout是System.out.println快捷键
基本知识
  1. Date date = new Date(); System.out.println(date);
    输出:

    CST 中央标准时间 北京时间
    GMT 格林威治时间
    UTC 世界标准时间
    GMT =UTC
    UTC+时差=本地时间
  2. 对日期进行格式化
    SimpleDateFormat formater =new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); //对日期进行格式化 中国人的习惯 单引号不行 yyyy年MM月dd日 HH时mm分ss秒也可以
法一:Date转String格式转换输出
System.out.println(formater.format(date));

补充法二:String转Date
错误用法:
直接用 System.out.println(formater.parse(date));
报错,
原因一:因为parse需要String类型的参数 且返回Date类型的对象 
原因二:即使用date.toString()也会报错,因为date.toString()的输出结果形式为:"Wed Oct 06 13:25:47 CST 2021"与formater中格式并不匹配  不匹配会解析失败!!为了使其匹配,可以修改formater的格式再用如下代码,此处不写。
System.out.println(formater.parse(date.toString()));
补充:parse()的用法
String dateStr="2021-10-6";
SimpleDateFormat formater  =new SimpleDateFormat("yyyy-MM-dd");  
System.out.println(formater.parse(dateStr));//String和DateFormat样式需一样,不然无法解析!!!例如2021-10-6对应yyyy-MM-dd  2021/10/6对应yyyy/MM/dd

参考: Java日期时间格式转换.

封装
  • DateUtils工具类

parse()

package com.tyut.common;


import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;


public class DateUtils {
 	//封装常量
    public static final String FORMAT_ONE = "yyyy-MM-dd HH:mm:ss";
    public static final String FORMAT_TWO = "yyyy-MM-dd";

    //封装方法
    public static Date stringToDate(String dateStr,String format){
   
        Date date = null;
		SimpleDateFormat formater  =new SimpleDateFormat(format);
        try{
        	 formater.setLenient(false);//不会自动计算日期,比如55个月就是不合法的日期会抛出异常
             date=formater.parse(dateStr); 
        }catch(Exception e){
            date=null;
        }
		 return date;
    }
}

补充:setLenient()函数 是否严格解析日期
我们需要判断用户的日期格式是否正确,从文件流读入的日期如果不合格就需要抛异常,这时候就需要禁止SimpleDateFormat的自动计算功能(false)。
参考:setLenient(true/false).

format()

package com.tyut.common;


import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;


public class DateUtils {
    //封装常量
    public static final String FORMAT_ONE = "yyyy-MM-dd HH:mm:ss";
    public static final String FORMAT_TWO = "yyyy-MM-dd";

    //封装方法
    public static String stringToDate(Date date,String format){

        String strDate = null;
        SimpleDateFormat formater  =new SimpleDateFormat(format);
        try {
            strDate=formater.format(date);
            return strDate;
        }catch (Exception e){
            e.printStackTrace();

        }
        return strDate;
    }
}

  • DateTime类
package com.tyut.datetime;

import com.tyut.common.DateUtils;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.sql.Time; //灰色表示未使用


public class DateTime {

    public static void main(String[] args) throws ParseException { //psvm快捷键
        Date date=new Date();
        String dateStr="2021-10-6";
        date=DateUtils.stringToDate(dateStr,"yyyy-MM-dd");//注意 dateStr与后面的格式类型要一样,否则会解析失败
        date=DateUtils.stringToDate(dateStr,DateUtils.FORMAT_TWO);//调用封装好的format
        System.out.println(date);
    }
}



调用format()

package com.tyut.datetime;

import com.tyut.common.DateUtils;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.sql.Time; //灰色表示未使用


public class DateTime {

    public static void main(String[] args) throws ParseException { //psvm快捷键
        Date date=new Date();
        String strDate=null;

        strDate=DateUtils.stringToDate(date,DateUtils.FORMAT_ONE);
        System.out.println(strDate);
    }
}


parse()不好用好麻烦

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

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

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