时间与日期
Date
名称 | 说明 |
public Date() | 创建一个Date对象,代表的是系统当前此刻日期时间 |
名称 | 说明 |
public long getTime() | 获取事件对象的毫秒值 |
时间毫秒值->对象
构造器 | 说明 |
public Date(long time) | 吧时间毫秒值转换成Date日期对象 |
Date方法 | 说明 |
public void setTime(long time) | 设置日期对象的时间为当前时间毫秒值对应时间 |
SimpleDateFormat
将Date对象或者时间毫秒值格式化成常规的时间 / 将常规时间转换成字符串对象
构造器 | 说明 |
public SimpleDateFormat() | 构造一个SimpleDateFormat,默认格式 |
public SImpleDateFormat(String pattern) | 构造一个SimpleDateFormat,使用指定的格式 |
格式化方法 | 说明 |
public final String Format(Date date) | 将日期格式化成日期 / 时间字符串 |
public final String Format(Object time) | 将时间毫秒值格式化成日期 / 时间字符串 |
案例1
public static void main(String[] args) {
// 1:创建一个Date类,代表系统此刻日期时间对象
Date d=new Date();
// System.out.println(d);
// System.out.println(d.getTime());
// 2.格式化这个日期对象
SimpleDateFormat sdf =new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss EEE a");
// EE表示周几 a表示上午/下午
// 3.开始格式化日期对象成为喜欢的格式
String rs= sdf.format(d);
System.out.println(rs);
}
解析方法 | 说明 |
public Date parse(String source) | 从给定字符串的开始解析文本以生成日期 |
案例2
public static void main(String[] args) throws ParseException {
//使用字符串来拿取时间
String dateStr="2021年08月06日 11:11:11";
// 将字符串时间解析成日期对象:形式必须与被解析的时间形式完全一致,否则无法解析
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 hh:mm:ss");
Date d = sdf.parse(dateStr);
// 时间往前推2天14小时 49分06秒 L的作用是防止数字过大
long time = d.getTime()+(2L*24*60*60 + 14*60*60 + 49*60 + 6) * 1000;
System.out.println(sdf.format(time));
}
Date a=new Date()
Date b=new Date();
a.after(b) //表示a在b的后面
a.before(b) // 表示a在b的前面
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() | 拿到此刻事件毫秒值 |
案例3
public static void main(String[] args) {
// 拿到系统此刻日历对象(当日的所有信息)
Calendar cal=Calendar.getInstance();
// public int get (int field)
// 获取日历的信息,年
int year=cal.get(Calendar.YEAR);
// public void set(int field,int value)
// 修改日历的信息,修改小时为12
cal.set(Calendar.HOUR,12);
// public void add(int field,int amount)
// 为某字段增加/减少指定的值.增加64天
cal.add(Calendar.DAY_OF_YEAR,64);
// public final Date getTime()
// 拿到此刻日期对象
cal.getTime();
// public long getTimeInMillis()
// 拿到此刻时间毫秒值
cal.getTimeInMillis();
}
JDK8 新增 java.time包提供了新的日期和时间API
- LocalDate:不包含具体时间
- LocalTime:不包含日期的时间
- LocalDateTime:包含了日期及时间
- Instant:代表的是事件戳
- DateTimeFormatter:用于做事件格式化的解析
- Duration:用于计算两个时间的间隔
- Period:用于计算两个日期的间隔
LocalDate nowDate=LocalDate.now(); //今天的日期nowDate
int year = nowDate.getYear(); //年
int month=nowDate.getMonthValue(); //月
int day=nowDate.getDayOfYear();//日
int dayOfYear=nowDate.getDayOfYear();//获取当年的第几天
int WeekEnglish=nowDate.getDayOfWeek();//获取第周几英文
int WeekChine=nowDate.getDayOfWeek().getValue();//获取数字的第周几
LocalTime nowTime=LocalTime.now();//获取本地时间
int hour=nowTime.getHour();//时
int minute=nowTime.getMinute();//分
int second=nowTime.getSecond();//秒
int nano=nowTime.getNano();//纳秒
nowTime.minusHours(1);//一小时前
nowTime.minusMinutes(1);//一分钟前
nowTime.plusHours(1);//一小时后
nowTime.plusMinutes(1);//一分钟后
2018-09-06.isBefore(nowDate);//判断该时间是否在系统时间之前
2018-09-06.isAfter(nowDate);//判断该时间是否在系统时间之后
LocalDate myDate=LocalDate.of(2018,9,5);//myDate中输入时间2018-09-05
判断今天是否是生日
JDK8获取时间更简单
//方法1
Instant instant = Instant.now();//当前时间
Date date=Date.from(instant); //当前时间是
instant.atZone(ZoneId.systemDefault());//默认上海时间
Date和instant 的相互转换
Date date=Date.from(instant); //instant装换为Date
Instant i2=date.toInstatn();//Date装换为instant 相差8小时
日期比较Duration 时间间隔 : Period日期间隔
LocalDateTime birthDate=LocalDateTime.of(2021,03,14,20,00,00)//导入时间
Duratime duration = Duration.between(birthDate,today);//第二个参数减第一个参数
duration.toDays();//两个时间天数差
duration.toHours();//两个时间小时差
ChronoUnit类用于单位内测一段时间
数据的类型及转换
Do
uble.valueOf(String) ;//将字符串转换成数字 其他以此类推
数据类型的全称,加大容错率 基本数据类型 引用数据类型 byte Byte short Short int Integer long Long char Character float Float double Double boolean Boolean