日历类:java.util.Calendar
1.Calendar:提供一些诸如 获取年,月,月中的日期 等等字段值
抽象类,不能实例化
静态功能,返回值是它自己本身
public static Calendar getInstance()
2.成员方法:
(1)public int get(int field):根据给定日历字段----获取日历字段的值(系统的日历)
(2)public abstract void add(int field,int amount):给指定的日历字段,添加或者减去时间偏移量
参数1:日历字段 参数2:偏移量
public class CalendarDemo {
public static void main(String[] args) {
//创建日历类对象
//获取系统的年月日
// Calendar c = new Calendar() ;
//public static Calendar getInstance()
Calendar calendar = Calendar.getInstance();
// System.out.println(calendar);
//获取年
//public static final int YEAR
int year = calendar.get(Calendar.YEAR) ;
//获取月:
//public static final int MONTH:0-11之间
int month = calendar.get(Calendar.MONTH) ;
//获取月中的日期
//public static final int DATE
//public static final int DAY OF MONTH : 每个月的第一天1
int date = calendar.get(Calendar.DATE) ;
System.out.println("当前日历为:"+year+"年"+(month+1)+"月"+date+"日");
System.out.println("------------------------------------------------");
//获取3年前的今天
//给year设置偏移量
// public abstract void add(int field,int amount)
// calendar.add(Calendar.YEAR,-3);
//获取
// year = calendar.get(Calendar.YEAR) ;
// System.out.println("当前日历为:"+year+"年"+(month+1)+"月"+date+"日");
}
}
通过创建date对象,获取系统当前时间(java.util.Date)
1.java.util.Date:表示特定瞬间,精确到毫秒,它还允许格式化和解析日期字符串.
2.构造方法:
public Date():当前系统时间格式
public Date(long date):参数为 时间毫秒值---->Date对象 (1970年1月1日...)
public class DateDemo {
public static void main(String[] args) {
//创建日期类对象
Date date = new Date() ;
System.out.println(date);
System.out.println("------------------------");
long time = 60*60 ;
Date date2 = new Date(time) ;
System.out.println(date2);
}
}
3. java.util.Date-----String 格式化过程
DateForamt:抽象类----提供具体的日期/格式化的子类:SimpleDateFormat
format(Date对象)--->String
4.SimpleDateFormat:构造函数
(1)public SimpleDateFormat():使用默认模式
(2)public SimpleDateFormat(String pattern):使用指定的模式进行解析或者格式 (推荐)
参数: 一种模式
表示年 "yyyy"
表示月 "MM"
表示月中的日期 "dd"
一天中小时数 "HH"
分钟数 "mm"
秒数 "ss"
String:日期文本----->Date
(3)解析过程
public Date parse(String source)throws ParseException
如果解析的字符串的格式和 public SimpleDateFormat(String pattern)的参数模式不匹配的话,就会出现解析异常
public class DateDemo2 {
public static void main(String[] args) throws ParseException {
//Date----->String:格式化
//1)创建Date对象:表示当前系统时间对象
Date date = new Date() ;
System.out.println(date);
//2)创建SimpleDateForamt对象:(中间桥梁)
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss") ;
//3)调用format:格式化
String strDate = sdf.format(date);
System.out.println(strDate);
System.out.println("--------------------------------");
//String---->Date(重点)
//1)有一个日期文本格式
//2)创建SimpleDateFormat对象指定一个模式
//3)调用解析parse方法
//注意:SimpleDateFormat解析模式必须和String日期文本格式匹配一致
String source = "2008-5-12" ; //日期文本
//SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy年MM月dd日") ;
SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd") ;
//public Date parse(String source)throws ParseException
Date dateResult = sdf2.parse(source);
System.out.println(dateResult);
}
}
5.Date和String类型如何转换
java.util.Date---->String: 格式化操作
//1)创建Date对象
Date date = new Date() ;
//2)创建SimpleDateFormat对象
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd") ;
//3)格式化的操作
String textDate = sdf.foramt(date) ; //使用textDate:日期文本字符串
String:日期文本字符串----->java.util.Date :解析操作
//1)日期文本字符串
String source = "2021-7-29" ; //格式
//2)创建SimpleDateFormat对象
SimplDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd") ; //模式必须和String的格式一致,否则解析出错
//3)解析操作
Date date2 = sdf2.parse(source) ; //使用Date
6.Date--->String---->封装成工具类完成互相转换
DateUtils.java
import java.util.Date;
import java.text.ParseException;
import java.text.SimpleDateFormat;
/*
* 这是针对java.util.Date日期对象和String:日期文本字符串进行相互转换的工具类
*/
class DateUtils {
//构造方法私有化
private DateUtils(){}
//提供两个静态功能
//Date---->String
/**
* 这个方法是针对将日期对象转换成日期文本字符串
* @param date 需要被格式化的日期对象
* @param pattern 需要指定的模式
* @return 返回的日期文本字符串 结果 yyyy-MM-dd
*/
public static String date2String(Date date,String pattern){
//分步走
//创建SimpleDateFormat对象
/* SimpleDateFormat sdf = new SimpleDateFormat(pattern) ;
String result = sdf.format(date);
return result ;*/
//一步走
return new SimpleDateFormat(pattern).format(date) ;
}
//String--->Date: 解析过程: parse(String source) throws ParseException
/**
* 这个方法针对String日期文本字符串转换成日期对象
* @param source 需要被解析的日期文本字符串
* @param pattern 需要解析中使用的一种模式
* @return 返回的就是日期对象Date
*/
public static Date string2Date(String source,String pattern) throws ParseException {
return new SimpleDateFormat(pattern).parse(source) ;
}
}
test.java
import java.text.ParseException;
import java.util.Date;
/*
* 测试下工具类
*/
public class test {
public static void main(String[] args) throws ParseException {
//直接使用工具类
//Date---->String 格式化
Date date = new Date() ;
String str = DateUtils.date2String(date, "yyyy-MM-dd HH:mm:ss");
System.out.println(str);
System.out.println("---------------------");
//String--->Date
String source = "2022-6-9" ;
Date date2 = DateUtils.string2Date(source, "yyyy-MM-dd");
System.out.println(date2);
}
}