java8 日期time测试用例以及结果分析
2016-12-10 16:58
316 查看
/* * 版权信息:北京汉方三陆零科技有限公司</br> * Copyright ?2014-2015. All rights reserved. 京ICP备15000045号 */ package com.lin.fund; import java.sql.Timestamp; import java.time.DayOfWeek; import java.time.Duration; import java.time.Instant; import java.time.LocalDate; import java.time.LocalDateTime; import java.time.LocalTime; import java.time.Month; import java.time.MonthDay; import java.time.Period; import java.time.YearMonth; import java.time.ZoneId; import java.time.ZonedDateTime; import java.time.format.DateTimeFormatter; import java.time.format.FormatStyle; import java.time.temporal.TemporalAdjuster; import java.time.temporal.TemporalAdjusters; import java.util.Calendar; import java.util.Date; import java.util.Set; import org.junit.Test; /**************************************************************************** * com.lin.fund Java8TimeTest.java Created on 2015年12月18日 * @Author: linfenliang * @Description: * @Version: 1.0 ***************************************************************************/ public class Java8TimeTest { static void sleep(long milliseconds){ try { Thread.sleep(milliseconds); } catch (InterruptedException e) { e.printStackTrace(); } } @Test public void InstantDurationTest() { System.out.println("---------------InstantDurationTest-------------"); Instant start = Instant.now(); long t0 = start.getEpochSecond(); System.out.println("Instant getEpochSecond:"+t0); int t1 = start.getNano(); System.out.println("Instant getNano:"+t1); long t2 = System.currentTimeMillis(); System.out.println("System.currentTimeMillis():"+t2); sleep(100); Instant end = Instant.now(); Duration duration = Duration.between(start, end); System.out.println("test function run in time(nano) :"+duration.getNano()+",millis:"+duration.toMillis()); Duration d1 = Duration.ofMillis(1000); System.out.println("检查两个duration相减是否为负数:"+duration.minus(d1).isNegative()); Instant instant1 = Calendar.getInstance().toInstant(); System.out.println("from Calendar instant:"+instant1); System.out.println("instant now :"+Instant.now()); /* java.time 包结构 */ } @Test public void LocalDateTemporalAdjustersTest(){ System.out.println("------------LocalDate、TemporalAdjusters Test-------------"); LocalDate today = LocalDate.now(); System.out.println("LocalDate today:"+today); LocalDate myBirthday = LocalDate.of(1988, 1, 1); System.out.println("LocalDate 1988-01-01:"+myBirthday); myBirthday = LocalDate.of(1988, Month.JANUARY, 1); System.out.println("LocalDate 1988-01-01:"+myBirthday); LocalDate thatDate = myBirthday.plusDays(256); System.out.println("当年程序员日:"+thatDate); LocalDate nextMonthOfDay = LocalDate.of(2015, Month.JANUARY, 31).plusMonths(1); System.out.println("2015年1月31日加上一个月后的日期:"+nextMonthOfDay); System.out.println("今天周几:"+today.getDayOfWeek().getValue()); MonthDay md = MonthDay.now(); System.out.println("月-日:"+md.getMonthValue()+"-"+md.getDayOfMonth()); YearMonth ym = YearMonth.now(); System.out.println("年-月:"+ym.getYear()+"-"+ym.getMonthValue()); LocalDate firstSaturday = LocalDate.of(2016, Month.JANUARY, 1).with(TemporalAdjusters.nextOrSame(DayOfWeek.SATURDAY)); System.out.println("2016年的第一个周六:"+firstSaturday); System.out.println("2016年的1月的最后一个周五:"+LocalDate.of(2016, Month.JANUARY, 1).with(TemporalAdjusters.lastInMonth(DayOfWeek.FRIDAY))); System.out.println("2016年的1月的第二个周五:"+LocalDate.of(2016, Month.JANUARY, 1).with(TemporalAdjusters.dayOfWeekInMonth(2, DayOfWeek.FRIDAY))); // TemporalAdjuster nextFair = f->{ // LocalDate date = (LocalDate) f; // return date.plusDays(5 - date.getDayOfYear()%5); // }; TemporalAdjuster nextFair = TemporalAdjusters.ofDateAdjuster(f->f.plusDays(5 - f.getDayOfYear()%5)); LocalDate nextYearOfFirstFair = LocalDate.of(2015,Month.DECEMBER, 31).with(nextFair); System.out.println("下一年的第一个集市:"+nextYearOfFirstFair); } @Test public void LocalTimeTest(){ System.out.println("--------------LocalTime------------"); LocalTime rightNow = LocalTime.now(); LocalTime thisTime = LocalTime.of(11, 14); System.out.println("rightNow time:"+rightNow); System.out.println("this time:"+thisTime); } @Test public void ZoneDateTimeTest(){ System.out.println("--------------ZoneDateTime--------------"); Set<String> zoneIds = ZoneId.getAvailableZoneIds(); zoneIds.forEach(s->System.out.print(s+",")); System.out.println(); ZonedDateTime zdt = ZonedDateTime.of(LocalDate.now(), LocalTime.now(), ZoneId.of("Asia/Shanghai")); // zdt.toInstant(); System.out.println(zdt); Instant now = Instant.now(); ZonedDateTime zonedNow = now.atZone(ZoneId.of("Asia/Shanghai")); System.out.println(zonedNow); //由于中国不再使用夏令时,欧洲大部分地区采用夏令时,目前仅作简单逻辑判断 ZonedDateTime skipped = ZonedDateTime.of(LocalDate.of(2013, 3, 31), LocalTime.of(2, 30),ZoneId.of("Europe/Berlin")); System.out.println("2013年的3月21日,2:30不存在:"+skipped); //下周一早上9点在柏林开会 ZonedDateTime wrongMeeting = ZonedDateTime.of(LocalDate.of(2016, 3, 10), LocalTime.of(9, 0),ZoneId.of("Europe/Berlin")).plus(Duration.ofDays(20)); ZonedDateTime nextMeeting = ZonedDateTime.of(LocalDate.of(2016, 3, 10), LocalTime.of(9, 0),ZoneId.of("Europe/Berlin")).plus(Period.ofDays(20)); System.out.println("【错误】:2016年3月10日上午九点在柏林说:20天后这个点开会:"+wrongMeeting); System.out.println("2016年3月10日上午九点在柏林说:20天后这个点开会:"+nextMeeting); } @Test public void DateTimeFormatterTest(){ System.out.println("------------------DateTimeFormatter test------------------"); LocalDateTime now = LocalDateTime.now(); String formatted = DateTimeFormatter.ISO_DATE_TIME.format(now); System.out.println("ISO_DATE_TIME:"+formatted); System.out.println("BASIC_ISO_DATE:"+DateTimeFormatter.BASIC_ISO_DATE.format(now)); System.out.println("ISO_LOCAL_DATE_TIME:"+DateTimeFormatter.ISO_LOCAL_DATE_TIME.format(now)); System.out.println("ISO_LOCAL_DATE:"+DateTimeFormatter.ISO_LOCAL_DATE.format(now)); System.out.println("ISO_ORDINAL_DATE:"+DateTimeFormatter.ISO_ORDINAL_DATE.format(now)); System.out.println("ISO_WEEK_DATE:"+DateTimeFormatter.ISO_WEEK_DATE.format(now)); DateTimeFormatter formatter = DateTimeFormatter.ofLocalizedDateTime(FormatStyle.MEDIUM); System.out.println(formatter.format(now)); DateTimeFormatter f = DateTimeFormatter.ofPattern("VV yyyy年MM月dd日HH时mm分ss秒"); System.out.println(f.format(ZonedDateTime.now())); LocalDate date = LocalDate.parse("2015-12-21",DateTimeFormatter.ofPattern("yyyy-MM-dd")); System.out.println(date); } @Test public void OldNewTrans(){ System.out.println("-------------新老日期的转换-------------------"); System.out.println("Calendar->instant:"+Calendar.getInstance().toInstant()); System.out.println("Date->instant:"+Calendar.getInstance().getTime().toInstant()); System.out.println("java.sql.Timestamp-> LocalDateTime:"+new Timestamp(new Date().getTime()).toLocalDateTime()); System.out.println("Instant->java.sql.Timestamp:"+Timestamp.from(Instant.now())); } }结果分析:
---------------InstantDurationTest------------- Instant getEpochSecond:1450681111 Instant getNano:794000000 System.currentTimeMillis():1450681111795 test function run in time(nano) :101000000,millis:101 检查两个duration相减是否为负数:true from Calendar instant:2015-12-21T06:58:31.919Z instant now :2015-12-21T06:58:32.060Z ------------LocalDate、TemporalAdjusters Test------------- LocalDate today:2015-12-21 LocalDate 1988-01-01:1988-01-01 LocalDate 1988-01-01:1988-01-01 当年程序员日:1988-09-13 2015年1月31日加上一个月后的日期:2015-02-28 今天周几:1 月-日:12-21 年-月:2015-12 2016年的第一个周六:2016-01-02 2016年的1月的最后一个周五:2016-01-29 2016年的1月的第二个周五:2016-01-08 下一年的第一个集市:2016-01-05 --------------LocalTime------------ rightNow time:14:58:32.105 this time:11:14 --------------ZoneDateTime-------------- Asia/Aden,America/Cuiaba,Etc/GMT+9,Etc/GMT+8,Africa/Nairobi,America/Marigot,Asia/Aqtau,Pacific/Kwajalein,America/El_Salvador,Asia/Pontianak,Africa/Cairo,Pacific/Pago_Pago,Africa/Mbabane,Asia/Kuching,Pacific/Honolulu,Pacific/Rarotonga,America/Guatemala,Australia/Hobart,Europe/London,America/Belize,America/Panama,Asia/Chungking,America/Managua,America/Indiana/Petersburg,Asia/Yerevan,Europe/Brussels,GMT,Europe/Warsaw,America/Chicago,Asia/Kashgar,Chile/Continental,Pacific/Yap,CET,Etc/GMT-1,Etc/GMT-0,Europe/Jersey,America/Tegucigalpa,Etc/GMT-5,Europe/Istanbul,America/Eirunepe,Etc/GMT-4,America/Miquelon,Etc/GMT-3,... 2015-12-21T14:58:32.142+08:00[Asia/Shanghai] 2015-12-21T14:58:32.143+08:00[Asia/Shanghai] 2013年的3月21日,2:30不存在:2013-03-31T03:30+02:00[Europe/Berlin] 【错误】:2016年3月10日上午九点在柏林说:20天后这个点开会:2016-03-30T10:00+02:00[Europe/Berlin] 2016年3月10日上午九点在柏林说:20天后这个点开会:2016-03-30T09:00+02:00[Europe/Berlin] -------------新老日期的转换------------------- Calendar->instant:2015-12-21T06:58:32.148Z Date->instant:2015-12-21T06:58:32.148Z java.sql.Timestamp-> LocalDateTime:2015-12-21T14:58:32.149 Instant->java.sql.Timestamp:2015-12-21 14:58:32.149 ------------------DateTimeFormatter test------------------ ISO_DATE_TIME:2015-12-21T14:58:32.15 BASIC_ISO_DATE:20151221 ISO_LOCAL_DATE_TIME:2015-12-21T14:58:32.15 ISO_LOCAL_DATE:2015-12-21 ISO_ORDINAL_DATE:2015-355 ISO_WEEK_DATE:2015-W52-1 2015-12-21 14:58:32 Asia/Shanghai 2015年12月21日14时58分32秒 2015-12-21
相关文章推荐
- SQL存储过程测试——创建测试用例以及测试结果存储
- Transaction Response Time事务响应时间图-我整理的LR性能测试结果分析
- Linux性能测试工具-UnixBench--安装以及结果分析
- Java程序的单元测试-分析并获取测试用例
- JAVA处理日期(Date)时间(Time)以及相关类的介绍
- java中的日期和sql中的日期转换以及java.util.Date, java.util.Calendar, java.sql.Date, java.sql.Time, java.sql.Timestamp区别和联系
- selenium2java一个弹框上传时间日期大杂烩测试用例
- jAVA处理日期(Date)时间(Time)以及相关类的介绍
- CETK测试原理/测试方法/测试结果分析以及常见WinCE Test Kit运行问题的排查
- select和poll程序测试以及结果分析
- JAVA处理日期(Date)时间(Time)以及相关类的介绍
- 第十四讲、jmeter中的监听器以及测试结果分析
- Java程序的单元测试-分析并获取测试用例
- 入门级----需求的分析以及测试用例的设计与编写
- java 实现BufferedImage和ImageReader两种方式获取图片宽高、判断图片类型、获取图片大小工具类代码以及测试响应结果
- Linux性能测试工具-UnixBench--安装以及结果分析
- Linux性能测试工具-UnixBench--安装以及结果分析
- JAVA处理日期(Date)时间(Time)以及相关类的介绍
- SQL存储过程测试(2)——创建测试用例以及测试结果存储
- java8中parallelStream性能测试及结果分析