当前位置: 首页 > news >正文

网站版面特点做网站公司东莞

网站版面特点,做网站公司东莞,阿里云自助建站教程,网络营销方式较为单一JAVA8中的日期API是JSR-310的实现#xff0c;并且是工作在ISO-8601日历系统基础上的#xff0c;但我们也可以在非ISO的日历上。JDK8的日期API大致分为以下几个包#xff1a;1 java.time包#xff1a;JDK8中的基础包#xff0c;所有常用的基础类都是这个包的一部分#xf…JAVA8中的日期API是JSR-310的实现并且是工作在ISO-8601日历系统基础上的但我们也可以在非ISO的日历上。JDK8的日期API大致分为以下几个包1 java.time包JDK8中的基础包所有常用的基础类都是这个包的一部分如LocalDateLocalTimeLocalDateTime等等所有这些类都是不可变且线程安全的2 java.time.chrono包这个包为非ISO的日历系统定义了一些API我们可以在借助这个包中的一些类扩展我们自己的日历系统3 java.time.format包这个包很明显了格式化和解析日期时间对象一般java.time包中的类都差不多能满足我们的需求了如果有需要可以调用这个包下的类自定义解析方式4 java.time.temporal包这个包很有意思封装了一些获取某个特定日期和时间的接口比如某月的第一天或最后一天并且这些方法都是属于特别好认的方法。5 java.time.zone包这个包就是时区相关的类了。在JDK1.8中我们经常使用的大约有如下几个类LocalDate, LocalTime, LocalDateTime, DateTimeFormatter等所以我们主要看一下这几个类的相关方法。1. 日期API1.1 LocalDatejava.time.LocalDate这个类是用来表示日期的也仅包含日期用起来十分方便方法也十分简单。我们来看一些小例子public static voidtestDate() {//1. 获取当前日期(年月日) -----打印输出-----2018-01-29LocalDate localDate LocalDate.now();System.out.println(localDate.toString());//2. 根据年月日构建Date ----打印输出-----2018-01-30LocalDate localDate1 LocalDate.of(2018, 01, 30);//3. 字符串转换日期,严格按照yyyy-MM-dd格式02写成2都不行,也可以自定义格式 -----打印输出-----2018-01-30。无效日期无法通过DateTimeParseException: Invalid dateLocalDate localDate2 LocalDate.parse(2018-01-30);//4. 获取本月第一天 -----打印输出-----2018-01-01LocalDate firstDayOfMonth localDate.with(TemporalAdjusters.firstDayOfMonth());//5. 获取本月第二天 -----打印输出-----2018-01-02LocalDate secondDayOfMonth localDate.withDayOfMonth(2);//6. 获取本月最后一天再也不用计算是282930还是31-----打印输出-----2018-01-31LocalDate lastDayOfMonth localDate.with(TemporalAdjusters.lastDayOfMonth());//7. 明天 -----打印输出----- 2018-01-30LocalDate tomorrowDay localDate.plusDays(1L);//8. 昨天 -----打印输出----- 2018-01-28LocalDate yesterday localDate.minusDays(1L);//9. 获取本年第120天 -----打印输出----- 2018-04-30LocalDate day localDate.withDayOfYear(120);//10. 计算两个日期间的天数long days localDate.until(localDate1, ChronoUnit.DAYS);System.out.println(days);//11. 计算两个日期间的周数long weeks localDate.until(localDate1, ChronoUnit.WEEKS);System.out.println(weeks);//12. 取2015年1月第一个周一这个计算用Calendar要死掉很多脑细胞LocalDate firstMondayOf2015 LocalDate.parse(2015-01-01).with(TemporalAdjusters.firstInMonth(DayOfWeek.MONDAY)); //2015-01-05}1.2 LocalTime同样和LocalDate相对应的另一个类就是LocalTime这个类恰好和LocalDate相反它表示的全是时间不包含日期。例子如下public static voidtestTime() {//1. 获取当前时间包含毫秒数 -----打印输出----- 21:03:26.315LocalTime localTime LocalTime.now();//2. 你可能想清除毫秒数LocalTime now LocalTime.now().withNano(0)); //11:09:09//3. 构建时间 -----打印输出----- 12:15:30LocalTime localTime1 LocalTime.of(12, 15, 30);//4. 获取当前时间不包含毫秒数 -----打印输出----- 21:01:56LocalTime localTime2 localTime.withNano(0);//5. 字符串转为时间还可以有其他格式比如12:15, 12:15:23.233//-----打印输出----- 12:15:30LocalTime localTime3 LocalTime.parse(12:15:30);}1.3 LocalDateTimeLocalDateTime就和原先的java.util.Date很像了既包含日期又包含时间它经常和DateTimeFormatter一起使用。public static voidtestDateTime() {//1. 获取当前年月日 时分秒 -----打印输出----- 2018-01-29T21:23:26.774LocalDateTime localDateTime LocalDateTime.now();//2. 通过LocalDate和LocalTime构建 ----- 打印输出----- 2018-01-29T21:24:41.738LocalDateTime localDateTime1 LocalDateTime.of(LocalDate.now(), LocalTime.now());//3. 构建年月日 时分秒 -----打印输出----- 2018-01-29T19:23:13LocalDateTime localDateTime2 LocalDateTime.of(2018, 01, 29, 19, 23, 13);//4. 格式化当前时间 ----打印输出----- 2018/01/29DateTimeFormatter formatter DateTimeFormatter.ofPattern(yyyy/MM/dd);System.out.println(formatter.format(localDateTime2));}使用LocalDateTime的with开头的方法可以设置相应的时间小时分钟等比如//设置分钟数LocalDateTime localDateTime LocalDateTime.now().withMinute(23);需要注意的有两点1 LocalDateTime默认的格式是 2018-01-29T21:23:26.774 这种格式这可能与我们经常使用的格式不太符合所以我们可以指定格式。2 DateTimeFormatter本身提供了许多静态格式化常量我们可以参考使用如果不能满足我们的需求的话我们可以自定义1.4 TemporalAdjusters该类是一个计算用的类提供了各种各样的计算方法。比如某个月的第一天某个月的最后一天某一年的第一天某一年的第几天等各种计算方法。该类内部实现基本上全都是通过JDK8的Lambda表达式来实现的。随便举一些例子都很简单。LocalDate localDate LocalDate.now();//1. 本月第一天LocalDate firstDayOfMonth localDate.with(TemporalAdjusters.firstDayOfMonth());//2. 本月最后一天LocalDate lastDayOfMonth localDate.with(TemporalAdjusters.lastDayOfMonth());//3. 本年第一天LocalDate firstDayOfYear localDate.with(TemporalAdjusters.firstDayOfYear());//4. 下个月第一天LocalDate firstDayOfNextMonth localDate.with(TemporalAdjusters.firstDayOfNextMonth());//5. 本年度最后一天LocalDate lastDayOfYear localDate.with(TemporalAdjusters.lastDayOfYear());System.out.println(firstDayOfMonth);System.out.println(lastDayOfMonth);System.out.println(firstDayOfYear);System.out.println(firstDayOfNextMonth);System.out.println(lastDayOfYear);打印输出2018-01-012018-01-312018-01-012018-02-012018-12-311.5 Period和DurationPeriod是基于ISO-8601标准的日期系统用于计算两个日期间的年月日的差值。比如2年3个月4天而Duration和Period很像但Duration计算的是两个日期间的秒纳秒的值是一种更为精确的计算方式而ISO-8601系统是当今世界大部分地区采用的现代日历的阳历系统。LocalDate localDate LocalDate.now();LocalDate localDate1 LocalDate.of(2018, 3, 28);Period periodPeriod.between(localDate, localDate1);System.out.println(period.getDays());System.out.println(period.getMonths());当然如果我们看一下Period的between方法实现就知道底层是通过LocalDate.until方法来实现的。同样Period的between方法也就等同于LocalDate.until方法。但这里有一个问题就是Period的getDays方法返回的不是两个日期间总的天数有点像月计算后剩余的天数但也不完全是所以不太清楚这个类实际的意义。看个例子LocalDate localDate1 LocalDate.of(2018, 01, 30);LocalDate localDate2 LocalDate.of(2018, 03, 01);Period periodPeriod.between(localDate1, localDate2);System.out.println(period.getDays());打印1我们把第一行代码换一下值再看一下LocalDate localDate1 LocalDate.of(2018, 01, 29);结果还是打印1。再换LocalDate localDate1 LocalDate.of(2018, 01, 28);LocalDate localDate1 LocalDate.of(2018, 01, 27);上面两个分别打印12。所以说在没搞清楚上面的方法之前还是不要贸然使用而如果要计算两个日期间的总的天数可以用如下方法来计算System.out.println(localDate1.until(localDate2, ChronoUnit.DAYS));System.out.println(ChronoUnit.DAYS.between(localDate1, localDate2));而对于Duration来说就更简单了计算两个时间之间的秒数纳秒数LocalTime localTime1 LocalTime.of(12, 12, 12);LocalTime localTime2 LocalTime.of(12, 13, 27);Duration durationDuration.between(localTime1, localTime2);System.out.println(duration.getSeconds());//75但有一点需要注意Duration中必须要支持秒数如果没有的话将会报错如LocalDate localDate1 LocalDate.of(2018, 02, 28);LocalDate localDate2 LocalDate.of(2018, 02, 27);Duration durationDuration.between(localDate1, localDate2);System.out.println(duration.getSeconds());将会直接提示Exception in thread mainjava.time.temporal.UnsupportedTemporalTypeException: Unsupported unit: Secondsat java.time.LocalDate.until(LocalDate.java:1614)at java.time.Duration.between(Duration.java:475)at com.jdk8.DateTest.testPeriod(DateTest.java:40)at com.jdk8.DateTest.main(DateTest.java:23)1.6 ChronoUnit这个是个枚举类型实现功能类型Period和Duration但如果我们看它的底层实现就可以看到它基本是基于Duration来实现的。这个枚举很简单我们直接看一些例子就可以了LocalDateTime oldDate LocalDateTime.of(2017, Month.AUGUST, 31, 10, 20, 55);LocalDateTime newDate LocalDateTime.of(2018, Month.NOVEMBER, 9, 10, 21, 56);System.out.println(oldDate);System.out.println(newDate);//count between dateslong years ChronoUnit.YEARS.between(oldDate, newDate);long months ChronoUnit.MONTHS.between(oldDate, newDate);long weeks ChronoUnit.WEEKS.between(oldDate, newDate);long days ChronoUnit.DAYS.between(oldDate, newDate);long hours ChronoUnit.HOURS.between(oldDate, newDate);long minutes ChronoUnit.MINUTES.between(oldDate, newDate);long seconds ChronoUnit.SECONDS.between(oldDate, newDate);long milis ChronoUnit.MILLIS.between(oldDate, newDate);long nano ChronoUnit.NANOS.between(oldDate, newDate);System.out.println(\n--- Total --- );System.out.println(years years);System.out.println(months months);System.out.println(weeks weeks);System.out.println(days days);System.out.println(hours hours);System.out.println(minutes minutes);System.out.println(seconds seconds);System.out.println(milis milis);System.out.println(nano nano);打印结果2017-08-31T10:20:552018-11-09T10:21:56--- Total ---1years14months62weeks435days10440hours626401minutes37584061seconds37584061000milis37584061000000000 nano1.7 Clock时钟系统用于查找当前时刻。通过指定一个时区我们可以获取到当前的时刻日期时间。所以可以使用一个时钟来代替System.currenttimemillis() 和 TimeZone.getDefault()。在应用程序的最佳实践是将时钟传递给任何需要当前即刻的方法public classMyBean {private Clock clock; //dependency inject...public voidprocess(LocalDate eventDate) {if(eventDate.isBefore(LocalDate.now(clock)) {...}}}我们可以简单测试一下//系统默认Clock systemDefaultClock Clock.systemDefaultZone();System.out.println(Current DateTime with system default clock: LocalDateTime.now(systemDefaultClock));System.out.println(systemDefaultClock.millis());//世界协调时UTCClock systemUTCClock Clock.systemUTC();System.out.println(Current DateTime with UTC clock: LocalDateTime.now(systemUTCClock));System.out.println(systemUTCClock.millis());//芝加哥Clock clock Clock.system(ZoneId.of(ZoneId.SHORT_IDS.get(CST)));System.out.println(Current DateTime with CST clock: LocalDateTime.now(clock));System.out.println(clock.millis());打印Current DateTime with system default clock: 2018-02-02T16:26:07.6651517559967665Current DateTime with UTC clock:2018-02-02T08:26:07.6651517559967665Current DateTime with CST clock:2018-02-02T02:26:07.6671517559967667并且我们可以使用 millis 方法来代替 System.currenttimemillis()。更多有关Clock方法实例可以参考下面链接(没找到JDK8的不过可以参考JDK9的)https://www.concretepage.com/java/java-9/java-clock1.8 其他其中还有一些类没有详细说明比如1 Instant表示的是时间戳用于记录某一时刻的更改(JDK8之前的Timestamp);2 ZoneId 时区标志比如用于标志欧洲/巴黎3 ZoneOffset 时区偏移量与UTC的偏移量4 ZonedDateTime 与时区有关的日历系统比如2007-12 03t10:15:3001欧洲/巴黎5 OffsetDateTime 用于与UTC偏移的日期时间如如2007-12 03t10:15:3001:00。2. 转换2.1 java.util.Date与LocalDateLocalTimeLocalDateTime替换将Date转换为LocalDateLocalTimeLocalDateTime可以借助于ZonedDateTime和Instant实现如下Date date newDate();System.out.println(current date: date);//Date - LocalDateTimeLocalDateTime localDateTime date.toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime();System.out.println(localDateTime by Instant: localDateTime);//Date - LocalDateLocalDate localDate date.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();System.out.println(localDate by Instant: localDate);//Date - LocalTimeLocalTime localTime date.toInstant().atZone(ZoneId.systemDefault()).toLocalTime();System.out.println(localTime by Instant: localTime);//2. Date - LocalDateTimelocalDateTime LocalDateTime.ofInstant(date.toInstant(), ZoneId.systemDefault());System.out.println(localDateTime by ofInstant: localDateTime);outputcurrent date: Fri Feb 02 16:43:13 CST 2018localDateTime by Instant:2018-02-02T16:43:13.073localDateTime by ofInstant:2018-02-02T16:43:13.073localDate by Instant:2018-02-02localTime by Instant:16:43:13.073由于JDK8实现了向下兼容所以Date里在JDK8版本引入了2个方法from 和toInstant所以我们可以借助这两个方法来实现LocalDateTime到Date的转换。将LocalDateTime转为Date如下LocalDateTime localDateTime LocalDateTime.now();System.out.println(localDateTime: localDateTime);//LocalDateTime - DateDate date Date.from(localDateTime.atZone(ZoneId.systemDefault()).toInstant());System.out.println(LocalDateTime - current date: date);//LocalDate - Date时间默认都是00LocalDate localDate LocalDate.now();dateDate.from(localDate.atStartOfDay(ZoneId.systemDefault()).toInstant());System.out.println(LocalDate - current date: date);outputlocalDateTime: 2018-02-02T16:55:52.464LocalDateTime- current date: Fri Feb 02 16:55:52 CST 2018LocalDate- current date: Fri Feb 02 00:00:00 CST 2018而单独的LocalTime转为Date没什么意义所以如果LocalTime要转为Date一般借助于LocalDate和LocalDateTime来实现就可以了。2.2 日期与字符串的转换日期与字符串的转换比较简单。先说转换成日期格式通过LocalDateLocalTimeLocalDateTime的parse方法和DateTimeFormatter来实现LocalDate localDate LocalDate.parse(2018-09-09, DateTimeFormatter.ofPattern(yyyy-MM-dd));LocalDateTime localDateTime LocalDateTime.parse(2018-09-10 12:12:12, DateTimeFormatter.ofPattern(yyyy-MM-dd HH:ss:mm));而将日期转为字符串可以通过format方法和DateTimeFormatter来实现String localDate LocalDate.now().format(DateTimeFormatter.ofPattern(yyyy-MM-dd));String localDateTime LocalDateTime.now().format(DateTimeFormatter.ofPattern(yyyy-MM-dd HH:ss:mm));总结1 java.time包下其实还有一些其他的类与方法如查询是否是闰年日期比较获取某一年的某一天等等我们可以等用到的时候再去查看不迟。并且我们可以将我们常用的方法封装成util包供我们在使用的时候直接调用。2 JDK8提供的这套API接口基本上封装了我们平时常用的所有与日期时间的相关操作所以如果升级了JDK8在处理日期和时间的时候尽量多用新的API。3 JDK8中新的日期不但命名优雅通俗易懂而且提供了向下兼容的能力可以无缝连接。4 如果用到了Period注意它的getDays方法。
http://wiki.neutronadmin.com/news/361152/

相关文章:

  • 网站首页轮播网站布局有哪些
  • 做网站客源网站开发销售话术
  • 徐州h5模板建站界面好看的网站
  • 怎么把网站做漂亮营销型企业网站建设
  • 济南高端网站网络营销实训个人总结
  • wordpress 站点管理员公益事业单位网站建设方案
  • 企业网站有哪些举几个例子空间站 参考消息
  • 有不收费的网站陕煤建设集团网站
  • 房山营销型网站建设网络推广长沙网络推广
  • 莱芜金点子招聘网安阳seo优化
  • 交互网站开发成都定制软件开发公司
  • 涿州规划建设局网站网站的制作视频
  • 有哪些推广网站移动端显卡
  • 网站域名要钱嘛网页设计总结报告
  • 企业微信小程序免费制作平台seowhy论坛
  • 网站一级域名和二级域名区别建设内部网站
  • asp.net视频网站模板下载html网页设计主题大全
  • 只做乡村旅游的网站网站建设名词解释与简答题
  • 吉安县规划建设局网站竞价推广代理
  • 贵阳电商网站建设洋桥网站建设公司
  • 昆明专业建站百度百科查询
  • 网络服务网站建设网站seo优化8888
  • google网站登录入口新开传奇网站新开网
  • iis下建立asp网站网站开发技术合同
  • 手机网站的域名工装公司和家装公司的区别
  • 免费简单网站唐山移动互联网开发
  • 河北建设集团官方网站网站后台补丁如何做
  • 做暖暖免费视频网站公司官网开发报价
  • 搭建源码下载站网站erp系统下载手机版
  • 个体营业执照可以做网站搞推广吗有了源码然后如何做网站