在JDK1.0中,Date类是唯一的一个代表时间的类,但是由于Date类不便于实现国际化,所以从JDK1.1版本开始,推荐使用Calendar类进行时间和日期处理。 从JDK 1.1开始, Calendar类应该用于在日期和时间字段之间进行转换,并且DateFormat类应用于格式化和解析日期字符串。 在相应的方法Date被弃用。
在类的所有方法Date接受或返回年,月,日,小时,分钟和秒值,可以分配一个 Date对象,并将其初始化为表示自称为“时代”的标准基准时间以后的指定毫秒数,即1970年1月1日00:00:00GMT。
一天的时间戳: 86400000
一个月的时间戳:2592000000
一年的时间戳:31104000000
代码演示:
public class Test{
public static void main(String[] args) {
//获取当前时间
Date date=new Date();
//把当前时间转化为时间戳
long time = date.getTime();
//定义一天的时间戳86400000
long day=86400000;
//定义一个月的时间戳
long month=2592000000L;
long year=31104000000L;
//创建时间格式对象
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
//将时间戳转化为字符串并且加上一天的时间戳
String time2=sdf.format(new Date(time+day));
//将时间戳转化为字符串并且加上一个月的时间戳
String time3=sdf.format(new Date(time+month));
//将时间戳转化为字符串并且加上一年的时间戳
String time4=sdf.format(new Date(time+year));
System.out.println("把当前时间增加一天:"+time2);
System.out.println("把当前时间增加一个月:"+time3);
System.out.println("把当前时间增加一年:"+time4);
}
}
Calendar类:
Calendar 类是一个抽象类,它为特定瞬间与一组诸如 YEAR、MONTH、DAY_OF_MONTH、HOUR 等
日历字段之间的转换提供了一些方法,并为操作日历字段(例如获得下星期的日期)提供了一些方法。
public class Test6{
public static void main(String[] args) {
Calendar calendar=Calendar.getInstance();//获取一个日历对象
//为日历对象定义一个指定日期的数据
calendar.set(2011,1,11,8,35,15);//为日历对象添加年、月、日
Date date=calendar.getTime();
SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyy-MM-dd");
System.out.println(simpleDateFormat.format(date));//将日期转换为字符串
//获取日历对象的年、月、日
int year = calendar.get(Calendar.YEAR); //获取日历对象的年份
int month = calendar.get(Calendar.MONTH);//获取日历对象的月份
int day = calendar.get(Calendar.DAY_OF_MONTH);//获取日历对象中月份的第几天
System.out.println("年份:"+year+"\t月份:"+month+"\t第"+day+"天");
int hour = calendar.get(Calendar.HOUR);//获取日历对象的时
int minute = calendar.get(Calendar.MINUTE);//获取日历对象的分
int second = calendar.get(Calendar.SECOND);//获取日历对象的秒
System.out.println("时"+hour+"分"+minute+"秒"+second);
}
}
代码演示
public class Test7{
public static void main(String[] args) {
Calendar calendar=Calendar.getInstance();//获取一个日历对象
Date date=calendar.getTime();
SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyy-MM-dd");
System.out.println("当前日期:"+simpleDateFormat.format(date));//将日期转换为字符串
calendar.add(Calendar.YEAR,2); //把当前的年份增加2年
calendar.add(Calendar.MONTH,-3); //把当前的月份减少3月
int year2= calendar.get(Calendar.YEAR);
int month2= calendar.get(Calendar.MONTH);
System.out.println("增加后的年份"+year2);
System.out.println("减少后的月份:"+month2);
}
}
Java8出的新的时间日期API都是线程安全的比如LocalDate、LocalTime、LocalDateTime这三个类,计算功能强大,并且性能更好,代码更简洁。
LocalDate :表示当前日期,相当于:yyyy-MM-dd
LocalTime :表示当前时间,相当于:HH:mm:ss (24小时制) 或者 hh:mm:ss(12小时制)
LocalDateTime :表示当前日期时间,相当于:yyyy-MM-ddTHH:mm:ss ,是前两者的结合
DateTimeFormatter :表示格式化类型,可以取代SimpleDateFormat
Instant :表示时刻,用来表示时间线上的一个点(瞬时),也可以说是时间戳
ZoneId、ZoneOffset :表示时区
ZonedDateTime :表示带时区的日期和时间,是前两者的结合
Duration :表示两个时刻之间的时间间隔
Period :表示两个日期之间的天数
代码演示:
public class Test{
public static void main(String[] args) {
//获取当前日期
LocalDateTime datetime=LocalDateTime.now();
System.out.println(datetime);
int year = datetime.getYear();//获取日期对象的年份
int monthValue = datetime.getMonthValue();//获取日期对象的月份
int dayOfMonth = datetime.getDayOfMonth();//获取日期对象的日期
int dayOfWeek =datetime.getDayOfWeek().getValue();//获取日期对象的周期
int hour = datetime.getHour();//获取日期对象的时
int minute = datetime.getMinute();//获取日期对象的分钟
int second = datetime.getSecond();//获取日期对象的秒
System.out.println("年:"+year+"\t月:"+monthValue+"\t日:"+dayOfMonth+"\t时:"+hour+"\t分:"+minute+"\t秒:"+second+"\t周:"+dayOfWeek);
}
}
代码演示
public class Test{
public static void main(String[] args) {
//根据指定的日期创建对象
LocalDateTime datetime2=LocalDateTime.of(2022,11,17,14,35,20);
System.out.println("当前日期时间:"+datetime2);
LocalDateTime plusYear=datetime2.plusYears(2L);//把当前的年份增加2年
LocalDateTime plusMonths = datetime2.plusMonths(1L);//把当前的月份增加1个月
LocalDateTime plusDays = datetime2.plusDays(10L);//把当前的日期增加10天
LocalDateTime plusHours = datetime2.plusHours(-3L);//把当前的时间减少3小时
LocalDateTime plusMinutes = datetime2.plusMinutes(-20L);//把当前的时间减少20分钟
LocalDateTime plusSeconds = datetime2.plusSeconds(15);//把当前的时间增加15秒
System.out.println("年:"+plusYear+"\n月:"+plusMonths+"\n日:"+plusDays+"\n时:"+plusHours+"\n分:"+plusMinutes+"\n秒:"+plusSeconds);
}
}
总结不易,希望小宝们不要吝啬你们的哟(^U^)