Java时间基础ApI汇总

274 阅读3分钟

常用的时间有两大类-旧式日期/新式日期

旧式日期

Date:获取日期对象

//Date,创建new Date会生成当前时间对象,用Date类型变量接收
Date date=new Date()

//时间对象.getTime将变量记录的日期时间生成 毫秒形式 可用long类型接收
 long time = date.getTime();

//再用new Date()括号内放入毫秒值,转化为该毫秒值对应的Date时间的对象
Date date1 = new Date(time);

simpleDateFormat:对Date对象和String对象进行转化

//new SimpleDateFormer()括号里添加转化成字符串的格式,用SimpleDateFormer接受
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");

//simpledateformer.former(Date)将Date转化成 字符串 类型
String simdate = simpleDateFormat.format(date);

//simpledateformer.parse(字符串)将字符串转化成 Date 类型
Date date2 = simpleDateFormat.parse(simdate);

Calendar:可以单独取出年月日、时分秒,而且可以对日期进行运算

//new Calendar.getInstance();获取当前Calendar类型日期
Calendar calendar = Calendar.getInstance();

//calendar.get(Calendar.*)用来获取具体信息,例如calendar.get(Calendar.YEAR)获取年份
calendar.get(Calendar.YEAR)
//如果获取月份,则是Calendar.MONTH;以此类推
//但是注意,获取月份的值需要+1,因为月份默认是从0开始

//calendar.getTime()获取Date时间对象,
Date date=calendar.getTime();

//calendar.getTimeInMillis()获取时间毫秒值
long timeInMillis = calendar.getTimeInMillis();


//calendar.set(修改的位置,修改进去的内容);
calendar.set(Calendar.MONTH,4);
把月份修改成4

//calendar.add(修改的位置,增加或减少的值)
calendar.add(Calendar.MONTH,-3);
给月份增加“-3”


新式日期

LocalDate和LocalDateTime:

LocalDateTime比LocalDate多了时分秒,其他一样,所以只演示LocalDateTime

新式日期单独获取年月日、时分秒有固定的方法,比较方便,比较日期也有固定的方法

//LocalDate.now();获取当前时间可以用 LocalDate类型的localDate接收
LocalDateTime localDateTime= LocalDateTime.now();

//localDate.get**()获取年月日
System.out.println(localDateTime.getYear());
System.out.println(localDateTime.getMonth().getValue());//获取月份时默认时英文,用getValue方法转化成数字
System.out.println(localDate.getDayOfMonth());//getDayofMonth是指获取在当月中的天数,也可以用getDayofMonth获取当周对应的天数

//localDate.with**()修改年月日
LocalDateTime ld=localDate.withYear(2060);//改变后的新的LocalDatetime用变量接收,因为原localDateTime不变

//localDate.plus**()/minus**()在年月日添加/减少时间
LocalDateTime ld2=localDateTime.plusYears(37);给年份增加37的值


//LocalDate.of()添加LocalDate类型日期对象
LocalDate ld3=LocalDate.of(2060,12,12);
LocalDate ld4=LocalDate.of(2060,1,1);

//localDate.equals()/isAfter/isBefore判断日期是否相等,晚于,早于、
System.out.println("判断两个日期是否相等"+ld3.equals(ld4));
System.out.println("ld3是否早与ld4"+ld3.isAfter(ld4));

//Instant.now也是获取当前时间的方法,getEpochSecond获取秒,getNano获取纳秒,
Instant instant = Instant.now();

DateTimeFormatter:LocalDateTime解析时间和格式化的工具

//DateTimeFormatter.ofPattern()在括号里创建格式,用DateTimeFormatter类型接收
//可以实现对应格式的字符和LocalDateTime之间的转化
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy年MM月dd日 HH:mm:ss");

//dateTimeFormatter.format,将LocalDateTime对象转化为字符串
LocalDateTime now = LocalDateTime.now();
String format = dateTimeFormatter.format(now);

//用创建的格式把字符串转化成格式LocalDateTime.parse
LocalDateTime parse = LocalDateTime.parse(format, dateTimeFormatter);//括号内填对应的字符串和DateTimeFormatter对象
//!调用format和parse的类不一样

Duration是用来计算时间差的工具类

/获取时间差
Duration duration=Duration.between(LocalDateTime1, LocalDateTime2);

最后再说一下新式日期如何在LocalDateTime与Long类型的毫秒之间作转化

//转化为毫秒
long l = LocalDateTime.now().toEpochSecond(ZoneId.systemDefault().getRules().getOffset(Instant.now()));

//转化为LocalDateTime
LocalDateTime localDateTime = LocalDateTime.ofEpochSecond(l, 0, ZoneId.systemDefault().getRules().getOffset(Instant.now()));