JDK7前时间相关类
Date | 表示时间 |
SimpleDateFormat | 表示格式化时间 |
Calendar | 表示日历 |
1.Date时间类
Date类是JavaBean类,用来描述时间,精确到毫秒
利用空参构造创建对象,默认表示系统当前时间
利用带参构造创建对象,表示指定时间
构造方法
方法名 | 说明 |
public Date() | 创建Date对象,表示当前时间 |
public Date(long date) | 创建Date对象,表示指定时间 |
成员方法
方法名 | 说明 |
public void setTime(long time) | 设置/修改毫秒值 |
public long getTime() | 获取时间对象的毫秒值 |
import java.util.Date;
public class DateDemo1 {
public static void main(String[] args) {
//利用空参构造创建对象表示当前时间
Date d = new Date();
System.out.println(d);//Thu Mar 09 18:59:48 CST 2023
//利用带参构造创建对象表示指定时间
Date d1 = new Date(0l);
System.out.println(d1);//Thu Jan 01 08:00:00 CST 1970
//setTime 修改时间
d1.setTime(1000l);
System.out.println(d1);//Thu Jan 01 08:00:01 CST 1970
//getTime 获取时间对象的毫秒值
long time = d1.getTime();
System.out.println(time);//1000
}
}
2.SimpleDateFormat类
格式化:可以把时间变成我们喜欢的格式
解析:把字符串表示的时间变成Date对象
构造方法 | 说明 |
public SimpleDateFormat() | 构造一个SimpleDateFormat,使用默认格式 |
public SimpleDateFormat(String pattern) | 构造一个SimpleDateFormat,使用指定的格式 |
常用方法 | 说明 |
public final String format(Date date) | 格式化(日期对象→字符串) |
public Date parse(String source) | 解析(字符串→日期对象) |
格式化时间常用的对应关系如下:
2023-03-09 19:50:25 → yyyy-MM-dd HH:mm:ss
2023年03月09日 19:50:25 → yyyy年MM月dd日 HH:mm:ss
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class SimpleDateFormatDamo1 {
public static void main(String[] args) throws ParseException {
//使用空参构造创建一个SimpleDateFormat对象,默认格式
SimpleDateFormat sdf1 = new SimpleDateFormat();
Date d = new Date(0l);
String str1 = sdf1.format(d);
System.out.println(str1);//70-1-1 上午8:00
使用带参构造创建一个SimpleDateFormat对象,指定格式
SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
String str2 = sdf2.format(d);
System.out.println(str2);//1970年01月01日 08:00:00
String s = "2023-01-01 01:01:01";
//创建对象的格式要跟字符串的格式完全一致
SimpleDateFormat sdf3 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date d1 = sdf3.parse(s);
System.out.println(d1);//Sun Jan 01 01:01:01 CST 2023
}
}
3.Calendar类
为什么学习Calendar类?
需求:将2022年1月1日增加一个月
- 定义字符串表示2022年1月1日
- 解析字符串得到Date对象
- 获取2022年1月1日的毫秒值
- 再增加一个月的毫秒值:1000*60*60*24*30
- 再格式化时间变成:2022年2月1日
Calendar类代表了系统当前时间的日历对象,可以单独修改、获取时间中的年、月、日,从而简化了上面的操作
细节:Calendar是一个抽象类,不能直接创建对象
Calendar常用方法
方法名 | 说明 |
public static Calendar getInstance() | 获取当前时间的日历对象 |
public final Date getTime() | 获取日期对象 |
public final setTime(Date date) | 给日历设置日期对象 |
public long getTimeInMillis() | 拿到时间的毫秒值 |
public void setTimeInMillis(long millis) | 给日历设置时间毫秒值 |
public int get(int field) | 取日历中的某个字段信息 |
public void set(int field,int value) | 修改日历的某个字段信息 |
public void add(int field,int amount) | 为某个字段增加/减少指定的值 |
import java.util.Calendar;
import java.util.Date;
public class CalendarDemo1 {
public static void main(String[] args) {
//获取日历对象
//方法底层会根据不同时区来获取不同的日历对象,默认表示当前时间
//会把时间中的纪元,年,月,日,时,分,秒,星期等等都放到一个数组当中
Calendar c = Calendar.getInstance();
System.out.println(c);
//细节:月份范围0~11,如果月份是0,实际上是1月;在星期中星期日是一周的第一天
//修改日历代表时间
Date d = new Date(0L);
c.setTime(d);
System.out.println(c);
Date time = c.getTime();
System.out.println(time);//Thu Jan 01 08:00:00 CST 1970
long timeInMillis = c.getTimeInMillis();
System.out.println(timeInMillis);//0
//0:纪元 1:年 2:月 3:一年中的第几周 4:一个月中的第几周 5:一个月中的第几天(日期) .....
//get 获取日历中的某个字段信息
int year = c.get(1);
int month = c.get(2);
int date = c.get(5);
System.out.println(year + "," + month + "," + date);//1970,0,1
int year1 = c.get(Calendar.YEAR);
int month1 = c.get(Calendar.MONTH) + 1;
int date1 = c.get(Calendar.DAY_OF_MONTH);
System.out.println(year1 + "," + month1 + "," + date1);//1970,1,1
//set 修改日历的某个字段信息
c.set(Calendar.YEAR,2023);
c.set(Calendar.MONTH,3);
c.set(Calendar.DAY_OF_MONTH,10);
System.out.println(c);
Date time1 = c.getTime();
System.out.println(time1);//Mon Apr 10 08:00:00 CST 2023
//add 为某个字段增加/减少指定的值
c.add(Calendar.DAY_OF_MONTH,10);
c.add(Calendar.MONTH,-1);
System.out.println(c);
}
}