Data
介绍
Date类代表当前所在系统的日期时间信息。
import java.util.Date;
public class Date_test {
public static void main(String[] args) {
//创建Date类的对象 代表系统此刻日期时间对象
Date t = new Date();
System.out.println(t); //输出为当前日期时间而并非地址
//说明内部已重写toString方法
}
}
Date常用方法
名称 | 说明 |
public Date() | 创建一个Date对象,代表的是系统当前此刻日期时间。 |
public long getTime() | 返回从1970年1月1日 00:00:00走到此刻的总的毫秒数 |
getTime()与获得时间毫秒值的方法
//获得时间毫秒值
//getTime()方法
long time1 = t.getTime();
System.out.println(time1);
//使用System.currentTimeMillis()
long time2 = System.currentTimeMillis();
System.out.println(time2);
}
}
Date构造器
将时间毫秒值转为Date日期对象:
public Date(long time)
设置日期对象的时间为当前时间毫秒值对应的时间:
public void setTime(long time)
案例演示
请计算出当前时间往后走1小时121秒之后的时间是多少。
思路1:
//当前时间
Date now = new Date();
System.out.println("当前时间"+now);
//得到当前时间毫秒值
long time1 = System.currentTimeMillis();
time1 += (60*60+121)+1000; //当前时间加上一小时121秒的时间
//利用Date构造器将时间毫秒值转换成Date日期对象
Date t = new Date(time1);
System.out.println("一小时121秒后的时间"+t);
思路2:
//当前时间
Date now = new Date();
System.out.println("当前时间"+now);
//得到当前时间毫秒值
long time1 = System.currentTimeMillis();
time1 += (60*60+121)+1000; //当前时间加上一小时121秒的时间
//使用setTime()得到时间毫秒值转换成Date日期对象
Date t = new Date();
t.setTime(time1);
System.out.println("一小时121秒后的时间"+t);
SimpleDateFormat
介绍
可以对Date对象或时间毫秒值格式化成我们喜欢的形式
可以将字符串形式解析为日期时间对象
格式化规则
每个字符格式化时代表的含义(大小写时要规范):
y 年
M 月
d 日
H 时
m 分
s 秒
E 星期
a 取上午或下午
SimpleDateFormat构造器
构造器 | 说明 |
public SimpleDateFormat(String pattern) | 创建简单日期格式化对象,并封装格式化的形式信息 |
public SimpleDateFormat() | 创建简单日期默认格式化对象 |
SimpleDateFormat格式化方法
格式化方法 | 说明 |
public final String format(Date date) | 将日期格式化成日期/时间字符串 |
public final String format(Object time) | 将时间毫秒值式化成日期/时间字符串 |
用法演示
格式化日期对象 :
//创建对象
Date d = new Date();
System.out.println(d);
//格式化这个日期时间对象_指定格式化形式
SimpleDateFormat a = new SimpleDateFormat("yyyy年 MM月 dd日 HH时 mm分 ss秒 EEE a");
String r = a.format(d);
System.out.println(r);
格式化时间毫秒值 :
SimpleDateFormat a = new SimpleDateFormat("yyyy年 MM月 dd日 HH时 mm分 ss秒 EEE a");
long time = System.currentTimeMillis() + 121 * 1000;
String s = a.format(time);
System.out.println(s);
解析字符串时间
解析方法 | 说明 |
public Date parse(String source) | 从给定字符串的开始解析文本以生成日期 |
案例:
2022年07月6日 12:12:12 往后2天 14 时40分01秒后的时间是多少
//将字符串复制到程序中
String dates = "2022年07月6日 12:12:12 ";
//将字符串时间解析成日期时间对象(形式必须完全一样不然就会报错)
SimpleDateFormat s = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
Date d = s.parse(dates);
//往后走2天 14 时40分01秒
long time = d.getTime() +(2L*24*60*60)+(14*60*60)+(14*60+60)+6;//在前面加上L是数据一 long型计算 这样更计算稳定
//格式化时间
System.out.println(s.format(time));
Calendar
介绍
Calendar代表了系统此刻日期对应的日历对象。
Calendar是一个抽象类,不能直接创建对象。
创建日历对象的方法
方法名 | 说明 |
public static Calendar getInstance() | 获取当前日历对象 |
Calendar常用方法
方法名 | 说明 |
public int get(int field) | 取日期中的某个字段信息。 |
public void set(int field,int value) | 修改日历的某个字段信息。 |
public void add(int field,int amount) | 为某个字段增加/减少指定的值 |
public final Date getTime() | 拿到此刻日期对象。 |
public long getTimeInMillis() | 拿到此刻时间毫秒值 |
方法演示
//获取当前日历对象
Calendar ca = Calendar.getInstance();
//获取日历信息(如果不知道是那些字段那么可以打印输出日历对象来看里面的信息)
int year = ca.get(Calendar.YEAR);
System.out.println(year);
int month = ca.get(Calendar.MONTH)+1;
System.out.println(month);
int day = ca.get(Calendar.DAY_OF_YEAR);
System.out.println(day);
//修改日历的某个字段信息。
ca.set(Calendar.HOUR,12); //将小时修改成12
//为某个字段增加/减少指定的值
//如:12天后是什么时间
ca.add(Calendar.DAY_OF_YEAR,12);
//拿到此刻日期对象。
Date d = ca.getTime();
System.out.println(d);
//拿到此刻时间毫秒值
long time = ca.getTimeInMillis();
System.out.println(time);
注意:calendar是可变日期对象,一旦修改后其对象本身表示的时间将产生变化。