目录
Date
基于1970年获取当前时间。主要方法:
public Date() :获取当前时间对象。
源码:
public Date() {
this(System.currentTimeMillis()); //获取当前时间
}
public Date(long date) :基于传入的date值获取当前时间对象。
public long getTime():返回日期时间的数字(毫秒数)
public boolean after(Date when) :在指定日期之后
public boolean before(Date when):在指定日期之前
实例:
public class Demo01 {
public static void main(String[] args) {
//Date()构造+getTime():
long today = new Date().getTime();
System.out.println("getTime():" + today);
today -= 11115712;
System.out.println("-----------------------");
//Date(long date)构造:
System.out.println("new Date(long date):" + new Date(today));
System.out.println("-----------------------");
//after():
boolean test = new Date().after(new Date(today));
System.out.println("after():" + test);
System.out.println("-----------------------");
//before():
boolean code = new Date().before(new Date(today));
System.out.println("before():" + code);
}
}
结果:
getTime():1581164337862
-----------------------
new Date(long date):Sat Feb 08 17:13:42 CST 2020
-----------------------
after():true
-----------------------
before():false
SimpleDateFormat
对时间进行格式化处理:主要方法:
public SimpleDateFormat(String pattern) :对时间进行格式化处理如:(yyyy-MM-dd HH:mm:ss),使用format()后时间会按照上述的顺序进行显示。
public final String format(Date date) :必须使用format时间才会按照格式化处理显示。
public Date parse(String source) throws ParseException :可以将格式正确的字符串转为时间。
实例:
public class Demo02 {
public static void main(String[] args) throws ParseException {
SimpleDateFormat sim = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
Date date = new Date();
System.out.println("format():" + sim.format(date));
String str = "2020/2/8 14:36:45";
System.out.println("parse():" + sim.format(sim.parse(str)));
}
}
结果:
format():2020/02/08 22:00:24
parse():2020/02/08 14:36:45
注意:
parse()只要格式正确不符合时间的正确性如:分钟写80,不会报错会自动进位。Calendar
Calendar要使用Calendar.getInstance()调用。主要方法:
public int get(int field) :获取时间。
public void set(int field, int value) :设置时间。
set还有很多重载的方法。
实例:
public class Demo03 {
public static void main(String[] args) {
Calendar cal = Calendar.getInstance();
//输出时间
System.out.println(String.format("%s/%s/%s %s:%s:%s:%s"
, cal.get(Calendar.YEAR)
, cal.get(Calendar.MONTH)+1
, cal.get(Calendar.DATE)
, cal.get(Calendar.HOUR_OF_DAY)
, cal.get(Calendar.MINUTE)
, cal.get(Calendar.SECOND)
, cal.get(Calendar.MILLISECOND)));
System.out.println("---------------------------");
//输出修改后的时间
cal.set(Calendar.YEAR,2022);
cal.set(Calendar.MINUTE,2);
cal.set(Calendar.DATE,4);
cal.set(Calendar.HOUR_OF_DAY,0);
cal.set(Calendar.MINUTE,0);
cal.set(Calendar.SECOND,0);
cal.set(Calendar.MILLISECOND,0);
System.out.println(String.format("%s/%s/%s %s:%s:%s:%s"
, cal.get(Calendar.YEAR)
, cal.get(Calendar.MONTH)+1
, cal.get(Calendar.DATE)
, cal.get(Calendar.HOUR_OF_DAY)
, cal.get(Calendar.MINUTE)
, cal.get(Calendar.SECOND)
, cal.get(Calendar.MILLISECOND)));
System.out.println("---------------------------");
cal.set(2020,8,-1);
//查看8月的最后一天
System.out.println(String.format("%s/%s/%s %s:%s:%s:%s"
, cal.get(Calendar.YEAR)
, cal.get(Calendar.MONTH)+1
, cal.get(Calendar.DATE)
, cal.get(Calendar.HOUR_OF_DAY)
, cal.get(Calendar.MINUTE)
, cal.get(Calendar.SECOND)
, cal.get(Calendar.MILLISECOND)));
cal.add(Calendar.DATE,1);
//天数加1
System.out.println("---------------------------");
System.out.println(String.format("%s/%s/%s %s:%s:%s:%s"
, cal.get(Calendar.YEAR)
, cal.get(Calendar.MONTH)+1
, cal.get(Calendar.DATE)
, cal.get(Calendar.HOUR_OF_DAY)
, cal.get(Calendar.MINUTE)
, cal.get(Calendar.SECOND)
, cal.get(Calendar.MILLISECOND)));
}
}
结果:
2020/2/8 22:36:41:40
---------------------------
2022/2/4 0:0:0:0
---------------------------
2020/8/30 0:0:0:0
---------------------------
2020/8/31 0:0:0:0
LocalDate
时间处理。主要方法:
public static LocalDate now():获取时间。
public int get(TemporalField field) 可以获取各种各样的日期数据。
public boolean isLeapYear():判断是否为闰年。
ublic LocalDate with(TemporalAdjuster adjuster):可以获取各种精细的时间数据。
public static LocalDate parse(CharSequence text) :将字符串转为时间。
实例:
public class Demo04 {
public static void main(String[] args) {
LocalDate local = LocalDate.now();
LocalTime localtime = LocalTime.now();
LocalDateTime localdatetime = LocalDateTime.now();
System.out.println("【LocalDate获取时间】"+local);
System.out.println("【LocalTime获取时间】"+localtime);
System.out.println("【LocalDateTime获取时间】"+localdatetime);
System.out.println("------------------------------------");
System.out.println("【获取年份】"+local.getYear());
System.out.println("【获取月份】"+local.getMonth().getValue());
System.out.println("【获取当前月的第几周】"+local.get(ChronoField.ALIGNED_WEEK_OF_MONTH));
System.out.println("【获取今年的第一天】"+local.get(ChronoField.DAY_OF_YEAR));
System.out.println("------------------------------------");
LocalDate date = LocalDate.parse("2000-03-17");
System.out.println("【是否为闰年】"+date.isLeapYear());
System.out.println("【所在天是周几】"+date.getDayOfWeek());
System.out.println("【月的第一天】"+date.with(TemporalAdjusters.firstDayOfMonth()));
System.out.println("【月的第二天】"+date.withDayOfMonth(2));
System.out.println("【月的最后一天】"+date.with(TemporalAdjusters.lastDayOfMonth()));
System.out.println("【所处月的第一天】"+date.with(TemporalAdjusters.firstInMonth(DayOfWeek.MONDAY)));
System.out.println("【所处年的第一天】"+LocalDate.parse("2000-01-01").with(TemporalAdjusters.firstInMonth(DayOfWeek.MONDAY)));
System.out.println("【在原有年的基础上增加10年】"+date.plusYears(10));
//等等。。。还有许多
}
}
结果:
【LocalDate获取时间】2020-02-08
【LocalTime获取时间】23:25:31.624798800
【LocalDateTime获取时间】2020-02-08T23:25:31.624798800
------------------------------------
【获取年份】2020
【获取月份】2
【获取当前月的第几周】2
【获取今年的第一天】39
------------------------------------
【是否为闰年】true
【所在天是周几】FRIDAY
【月的第一天】2000-03-01
【月的第二天】2000-03-02
【月的最后一天】2000-03-31
【所处月的第一天】2000-03-06
【所处年的第一天】2000-01-03
【在原有年的基础上增加10年】2010-03-17
有用处的文章
LocalDatetime:https://blog.csdn.net/HiBoyljw/article/details/81352934
LocalDate:https://blog.csdn.net/weixin_39723544/article/details/80091100
为什么要是用LocalDatetime而非Date:https://juejin.im/post/5d7787625188252388753eae