Long timestamp = System.currentTimeMillis();
java.util.Data类
import java.text.SimpleDateFormat;
import java.util.Date;
//创建时间对象
Date date = new Date();
System.out.println(date);//日期对象:Sun Feb 21 11:14:19 CST 2021
//获取时间戳
System.out.println(date.getTime());//Long类型
//格式化输出时间
System.out.println(date.toString());//字符串:Sun Feb 21 11:14:19 CST 2021
java.sql.Date类
对应数据库的日期类型的变量
//创建java.sql.Date对象
java.sql.Date date1 = new java.sql.Date(1613879447151L);
System.out.println(date1);//2021-02-21
//java.util.Data转java.sql.Date
Date date = new Date();
java.sql.Date date1 = new java.sql.Date(date.getTime());
SimpleDateFormat类
//用 SimpleDateFormat类,日期转字符串
SimpleDateFormat s = new SimpleDateFormat("yy-MM-dd HH:mm:ss sss");
System.out.println(s.format(date));//21-02-21 11:20:44 044
//字符串转日期
String str = "21-02-21 11:20:44";
SimpleDateFormat s = new SimpleDateFormat("yy-MM-dd HH:mm:ss");//格式必须与字符串相对应
try {
Date d = s.parse(str);//需要处理该方法抛出的异常,否则会报错
System.out.println(d);//日期对象:Sun Feb 21 11:14:19 CST 2021
}catch (java.text.ParseException e){
e.printStackTrace();
}
Calendar类
import java.util.Calendar;
//Calendar是抽象类,无法通过实例化得到对象
//方式一:创建子类(GregorianCalendar)的对象
//方式二:通过getInstance()方法获取
Calendar cal = Calendar.getInstance();//Calendar对象的属性是可变的
//获取值,get
int year = cal.get(Calendar.YEAR);//特别注意:月份MONTH从0开始;DAY_OF_WEEK第一天是星期天(1)
System.out.println(year);//2021
//设置值,set
cal.set(Calendar.YEAR,2020);
//计算add
cal.add(Calendar.YEAR,1)
//两个Calendar对象比较(时间戳大小)
int i = cal1.compareTo(cal2);
System.out.println(i);//cal1等于cal2时,返回0;小于,返回-1;大于,返回1
//日历类-->Date对象
cal.getTime();
//Date对象-->日历类
Date date = new Date();
cal.setTime(date);
JDK1.0时包含的java.util.Date的大多数方法已被弃用,而JDK1.1时引入的Calendar类也未改善多少,它们面临如下问题:
1.可变性:像日期和时间的类应该是不可变的
2.偏移量:Date中年份时从1900开始,月份是从0开始,容易误解
3.Calendar无法格式化
4.线程不安全,且无法处理闰秒
//获取当前日期、时间
LocalDate date = LocalDate.now();
LocalTime time = LocalTime.now();
LocalDateTime dateTime = LocalDateTime.now();//LocalDateTime使用频率比LocalDate、LocalTime高
//获取指定日期of():年月日、时分秒,无偏移
LocalDateTime.of(2021,02,22,23,05,01);
//getXXX()获取相关属性,以LocalDateTime类为例
LocalDateTime dateTime = LocalDateTime.now();
System.out.println(dateTime);//2021-02-22T23:15:53.057
System.out.println(dateTime.getDayOfYear());//53
System.out.println(dateTime.getDayOfMonth());//22
System.out.println(dateTime.getDayOfWeek());//MONDAY
//不可变性,通过withXXX()设置相关属性
LocalDateTime dateTime1 = dateTime.withYear(2020);
System.out.println("dateTime: "+dateTime);//dateTime: 2021-02-22T23:21:19.657
System.out.println("dateTime1: "+dateTime1);//dateTime1: 2020-02-22T23:21:19.657
//plusXXX(),进行加操作
LocalDateTime dateTime = LocalDateTime.now();
System.out.println(dateTime);//2021-02-22T23:27:49.096
System.out.println(dateTime.plusYears(1));//2022-02-22T23:27:49.096
//minusXXX(),进行减操作
LocalDateTime dateTime = LocalDateTime.now();
System.out.println(dateTime);//2021-02-22T23:27:49.096
System.out.println(dateTime.minusYears(1));//2020-02-22T23:27:49.096
//now方法创建Instance对象
Instant instant = Instant.now();
System.out.println(instant);//2021-02-24T14:29:59.735Z
//通过毫秒数创建
Instant instant1 = Instant.ofEpochMilli(1614177554274L);
System.out.println(instant1);//2021-02-24T14:39:14.274Z
//创建不同时区offsetDateTime对象,添加时间偏移量
OffsetDateTime offsetDateTime = instant.atOffset(ZoneOffset.ofHours(8));
System.out.println(offsetDateTime);//2021-02-24T22:35:43.848+08:00
//获取时间戳
long l = instant.toEpochMilli();
System.out.println(l);//1614177554274
//实例化
//方式一:预定义标准格式:
DateTimeFormatter isoLocalDateTime = DateTimeFormatter.ISO_LOCAL_DATE_TIME;
DateTimeFormatter isoLocalDate = DateTimeFormatter.ISO_LOCAL_DATE;
DateTimeFormatter isoLocalTime = DateTimeFormatter.ISO_LOCAL_TIME;
//格式化
LocalDateTime localDateTime = LocalDateTime.now();
String format = isoLocalDateTime.format(localDateTime);
System.out.println(format);//2021-02-25T23:03:14.758
//解析
TemporalAccessor parse = isoLocalDateTime.parse(format);
System.out.println(parse);//{},ISO resolved to 2021-02-25T23:11:00.366
//方式二:本地化相关格式,如oflocaliedDateTime
//常量:FormateStyle.LONG\FormateStyle.MEDIUM\FormateStyle.SHORT
//适用于格式化LocalDateTime对象
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofLocalizedDateTime(FormatStyle.MEDIUM);
String format1 = dateTimeFormatter.format(localDateTime);
System.out.println(format1);//2021-2-25 23:25:11
DateTimeFormatter dateTimeFormatter1 = DateTimeFormatter.ofLocalizedDate(FormatStyle.FULL);
String format2 = dateTimeFormatter1.format(localDateTime);
System.out.println(format2);//2021年2月25日 星期四
//方式三:自定义格式
DateTimeFormatter dateTimeFormatter2 = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
LocalDateTime localDateTime1 = LocalDateTime.of(2021, 02, 25, 23, 32, 59);
//格式化
String format3 = dateTimeFormatter2.format(localDateTime1);
System.out.println(format3);//2021-02-25 11:32:59
原文:https://www.cnblogs.com/zuozs/p/14444333.html