Java日期类
- java.util.Date类封装当前的日期和时间 大部分方法都已经过时
第一代日期类Date
属性 | 说明 |
---|---|
long getTime(); | 获取当前时间,时间戳 |
void setTime(long time); | 设置时间 |
boolean after(Date when) | 测试此日期是否晚于指定日期。 |
boolean before(Date when) | 测试此日期是否早于指定日期。 |
public class DateTest2 {
public static void main(String[] args) {
//gettime 获取当前系统毫秒时间 (时间戳)
Date d = new Date();
System.out.println(d.getTime());
//获取今天时间 此方法已过时
System.out.println(d.toLocaleString());
//获取昨天时间
Date d2 = new Date(d.getTime()-(60*60*24*1000));
System.out.println(d2.toLocaleString());
//比较今天是否晚于昨天
boolean after = d.after(d2);
System.out.println(after);
//比较今天是否早于昨天
boolean before = d.before(d2);
System.out.println(before);
}
}
SimpleDateFormat类
属性 | 说明 |
---|---|
format | 将一个Date格式转化为日期/时间字符串,此方法继承的父类DateFormat的方法 |
parse | 从给定字符串的开始解析文本,以生成一个日期,此方法为继承的父类DateFormat的方法 |
- java.text.DateFormat类是日期/时间格式化子类的抽象类,它以与语言无关的方式格式化并解析日期或时间
public class DateTest3 {
public static void main(String[] args) throws ParseException {
//创建日期
Date date = new Date();
//对日期进行格式化
//格式:yyyy-MM.dd HH:mm:ss SSS
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss SSS");
System.out.println(sdf.format(date));
//字符串转换为时间
String str = "2001-10-17 10:17:15 888";
SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss SSS");
Date parse = sdf1.parse(str);
System.out.println(parse);
}
}
第二代日期类Calendar
- Date类用于返回日期对象,不适合获取日历字段。设置和获取日历字段的方法,被JDK1.1推出的Calendar代替。
属性 | 说明 |
---|---|
getInstance() | 使用默认时区和语言环境获得一个日历,也可以通过getInstance(TimeZone time,Locale loc)或指定时区和语言环境的日历 |
get(int field) | 获取指定日历字段 |
set(int year,int month,int date,int hourOfDay,int minute,int second) | 设置字段YEAR、MONTH、DAY_OF_MONTH、HOUR、MINUTE和SECOND的值 |
public class DateTest4 {
public static void main(String[] args) {
Calendar calendar = Calendar.getInstance();
int Year = calendar.get(Calendar.YEAR); //年
int Month = calendar.get(Calendar.MONTH)+1; //1月从0开始 月
int DayMonth = calendar.get(Calendar.DAY_OF_MONTH); //日
int Hour = calendar.get((Calendar.HOUR)); //时
int Minute = calendar.get(Calendar.MINUTE); //分
int Second = calendar.get(Calendar.SECOND); //秒
System.out.println(Year + "-" + Month + "-" + DayMonth + "\t" + Hour + ":" + Minute + ":" + Second); // 2023-3-4 5:36:52
}
}
public class DateTest5 {
public static void main(String[] args) {
Calendar calendar = Calendar.getInstance();
//获取今年的多少天
int DayYear = calendar.get(Calendar.DAY_OF_YEAR); //63
//获取这个月的多少天
int DayMonth = calendar.get(Calendar.DAY_OF_MONTH); //4
//获取这一周的第几天 自然周从周日开始默认是0
int DayWeek = calendar.get(Calendar.DAY_OF_WEEK); //7
System.out.println("今年已经过去了" + DayYear + "天 这个月已经过去了" + DayMonth + "天 这一周已经过去了" + DayWeek + "天");
}
}
第三代日期类
- JDK 1.0中包含了一个java.util.Date类
- JDK 1.1引入Calendar类之后被弃用了
- JDK1.8引用的java.time纠正了过去的缺陷
LocalDateTime类
属性 | 说明 |
---|---|
LocalDate now() | 返回日期 |
int getYear() | 返回年份 |
int getMonthValue() | 返回月份 |
int getDayOfMonth() | 返回日期 |
int getHour() | 返回小时 |
int getMinute() | 返回分钟 |
int getSecond() | 返回秒 |
public class DateTest6 {
public static void main(String[] args) {
//获取日期
LocalDateTime time = LocalDateTime.now();
System.out.println(time); // 2023-03-04T20:13:42.175
//年
int Year = time.getYear();
//月
int Month = time.getMonthValue();
//日
int dayOfMonth = time.getDayOfMonth();
//时
int hour = time.getHour();
//小时
int minute = time.getMinute();
//分钟
int second = time.getSecond();
System.out.println(Year + "年 " + Month + "月 " + dayOfMonth + "日 " + hour + "时 " + minute + "分 " + second + "秒 ");
//2023年 3月 4日 20时 27分 14秒
}
}
DateTimeFormatter类
- DateTimeFormatter可以格式化LocalDate、LocalTime、LocalDateTime及Instant类
属性 | 说明 |
---|---|
static DateTimeFormatter ofPattern(String pattern) | 静态方法,返回一个DateTimeFormatter对象 |
String format(TemporalAccessor t) | 格式化一个日期、时间,返回字符串 |
TemporalAccessor parse(CharSequence text) | 将指定格式的字符序列解析为一个日期、时间 |
public class DateTest7 {
public static void main(String[] args) {
//获取当前时间
LocalDateTime localDateTime = LocalDateTime.now();
System.out.println(localDateTime); //2023-03-04T20:31:57.261
//把日期对象解析成LocalDateTime对象
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
//格式化日期
String format = dtf.format(localDateTime);
System.out.println(format); //2023-03-04 08小时03分钟57秒
//字符串转换为日期
String sy = "2001-10-17 15:30:05";
TemporalAccessor parse = dtf.parse(sy);
System.out.println(parse); //{},ISO resolved to 2001-10-17T15:30:05
}
}