- 基本知识
- 封装
psvm是 public static void main(String[] args)idea快捷键 sout是System.out.println快捷键基本知识
- Date date = new Date(); System.out.println(date);
输出:
CST 中央标准时间 北京时间
GMT 格林威治时间
UTC 世界标准时间
GMT =UTC
UTC+时差=本地时间 - 对日期进行格式化
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()不好用好麻烦



