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

easyui 网站开发实现onethink 网站

easyui 网站开发实现,onethink 网站,网站建设安排,买卖平台有哪些网站转载自 Java日期及时间库插件 -- Joda Time.来到新公司工作也有一个多月了, 陆陆续续做了一些简单的项目. 今天做一个新东西的时候发现了 Joda Time的这个东西, 因为以前用的都是JDK原生的时间处理API, 大家都知道Java原生的时间处理的API一直都是不太好用, 所以这个有必要去…转载自   Java日期及时间库插件 -- Joda Time.来到新公司工作也有一个多月了, 陆陆续续做了一些简单的项目. 今天做一个新东西的时候发现了 Joda Time的这个东西, 因为以前用的都是JDK原生的时间处理API, 大家都知道Java原生的时间处理的API一直都是不太好用, 所以这个有必要去学习下, 去总结下.来到新公司学到的东西挺多的, 比如我们用了Guava, ElasticSearch, kafka/mns/ons, GuavaCache/Ehcache/Memcahe .... 等很多东西都是我以前没有接触过的. 所以待我学习的东西还有很多. 每天都是怀着激动的心情, 去汲取更多的知识. 说了这么多屁话, 开始总结了.一: 使用示例  因为双十一就快到了, 所以接触了一个秒杀的活动, 其中有这么一块代码:  /*** 检查抽奖时间** return true 可以抽奖 false 不能抽奖*/private boolean checkDrawTime() {return DateTime.parse(2016-11-11 11:11:00, DateTimeFormat.forPattern(yyyy-MM-dd HH:mm:ss)).isBeforeNow();} 这个方法很简单, 就是检查现在的时间是不是2016/11/11 11:11:00 之前. 当然这里的DateTime是Jode Time里的类.查看源码可以知道, DateTime.parse就是将输入的时间转换为后面的格式, 转换的结果为: 然后再用isBeforeNow方法来比较, 下面看下这个方法具体的做法: public boolean isBeforeNow() {return this.isBefore(DateTimeUtils.currentTimeMillis()); }public boolean isBefore(long var1) {return this.getMillis() var1; } 这样看过来是不是很清楚了, 当然Java 自带的JDK也是可以完成的, 但是Joda Time都给我封装好了, 用起来就更加简单了. 接下来看看更多的例子: 1、创建任意时间对象 //jdk Calendar calendarCalendar.getInstance(); calendar.set(2012, Calendar.NOVEMBER, 15, 18, 23,55);//Joda-time DateTime dateTimenew DateTime(2012, 12, 15, 18, 23,55); 2、计算两日期相差的天数 //jdkCalendar start Calendar.getInstance(); start.set(2012, Calendar.NOVEMBER, 14);Calendar end Calendar.getInstance();end.set(2012, Calendar.NOVEMBER, 15);long startTim start.getTimeInMillis();long endTim end.getTimeInMillis();long diff endTim-startTim;int days(int) (diff/1000 / 3600 / 24);//joda-timeLocalDate startnew LocalDate(2012, 12,14);LocalDate endnew LocalDate(2012, 12, 15);int days Days.daysBetween(start, end).getDays();3、获取18天之后的某天在下个月的当前周的第一天日期 //jdk Calendar current Calendar.getInstance(); current.add(Calendar.DAY_OF_MONTH, 18); current.add(Calendar.MONTH, 1);...... DateFormat dateFormatnew SimpleDateFormat(yyyy-MM-dd HH:mm:ss); Date date current.getTime(); String dateStr dateFormat.format(date); System.out.println(dateStr);//joda-time String dateStr new DateTime().plusDays(18).plusMonths(1).dayOfWeek().withMinimumValue().toString(yyyy-MM-dd HH:mm:ss); System.out.println(dateStr);4、时间格式化 DateTimeFormatter format DateTimeFormat .forPattern(yyyy-MM-dd HH:mm:ss);//时间解析 DateTime dateTime DateTime.parse(2012-12-21 23:22:45, format);//时间格式化输出 2012/12/21 23:22:45 Fri String string_u dateTime.toString(yyyy/MM/dd HH:mm:ss EE); System.out.println(string_u);//格式化带Locale输出 2012年12月21日 23:22:45 星期五 String string_c dateTime.toString(yyyy年MM月dd日 HH:mm:ss EE,Locale.CHINESE); System.out.println(string_c);5、与JDK互操作 //通过jdk时间对象构造 Date date new Date(); DateTime dateTime new DateTime(date);Calendar calendar Calendar.getInstance(); dateTime new DateTime(calendar);// Joda-time 各种操作..... dateTime dateTime.plusDays(1) // 增加天.plusYears(1)// 增加年.plusMonths(1)// 增加月.plusWeeks(1)// 增加星期.minusMillis(1)// 减分钟.minusHours(1)// 减小时.minusSeconds(1);// 减秒数// 计算完转换成jdk 对象 Date date2 dateTime.toDate(); Calendar calendar2 dateTime.toCalendar(Locale.CHINA)二: api简介 Maven项目组中引入Joda Time坐标地址: !-- joda -- dependencygroupIdjoda-time/groupIdartifactIdjoda-time/artifactIdversion2.3/version /dependency 1, 日期和时间:Joda-time里面的时间全都是不可变的也就是不可变性。 DateTime 类似于JDK中的Calendar提供了更多的方法。DateMidnight 这个概念稍微复杂封装某个时区通常为默认时区在特定年/月/日的午夜时分的时刻。它基本上类似于 DateTime不同之处在于时间部分总是为与该对象关联的特定 DateTimeZone 时区的午夜时分。LocalDate 无时间的类只包含年月日。不包含时区LocalTime 无日期的类只包含时间。不包含时区LocalDateTime 包含日期和时间。不包含时区 下面举一些简单的例子说明Joda-time的强大之处: //获取当前月份 DateTime dt new DateTime(); int month dt.getMonthOfYear(); //设定2000年/获取当前小时2的小时 DateTime dt new DateTime(); DateTime year2000 dt.withYear(2000); DateTime twoHoursLater dt.plusHours(2); System.out.println(year2000.getYear()); System.out.println(twoHoursLater.getHourOfDay()); //以及下面的一些操作 String monthName dt.monthOfYear().getAsText(); String frenchShortName dt.monthOfYear().getAsShortText(Locale.FRENCH); boolean isLeapYear dt.year().isLeap(); DateTime rounded dt.dayOfMonth().roundFloorCopy(); System.out.println(monthName); // 本地月份名称 System.out.println(frenchShortName); // 法语月份简称 System.out.println(isLeapYear); // 是否闰年 System.out.println(rounded); // 获取当天0:0:0的DateTime对象2, 日历系统及时区 Joda-time支持多种年表即日历系统及所有时区。主要的两个类如下Chronology 年表Joda-time支持很多年表。就像JDK有Calendar也有GregorianCalendar。DateTimeZone 时区。 示例如下一般系统都没有这个需求。 Chronology coptic CopticChronology.getInstance(); System.out.println(coptic); // CopticChronology[Asia/Shanghai]DateTimeZone zone DateTimeZone.forID(Asia/Tokyo); Chronology gregorianJuian GJChronology.getInstance(zone); System.out.println(gregorianJuian); // GJChronology[Asia/Tokyo]3, 时间跨度 Joda-time支持的时间跨度有三个分别如下Interval 根据开始、结束时间表示一个特定的时间跨度。其为半开区间即包括起始时刻不包含结束时刻。Period Period设定了一些特定的时间跨度比如小时、天、月。Duration 表示绝对的精准跨度以毫秒为单位。 使用示例如下: DateTime beginDateTime new DateTime(2010, 1, 1, 0, 0, 0); DateTime endDateTime new DateTime(2015, 1, 1, 0, 0, 0); Interval interval new Interval(beginDateTime, endDateTime); System.out.println(interval.containsNow()); // 是否包含当前时间 System.out.println(interval.toDurationMillis()); // 时间间隔毫秒数DateTime dt new DateTime(2005, 3, 26, 12, 0, 0, 0); DateTime plusPeriod dt.plus(Period.days(1)); System.out.println(plusPeriod); // Period的方式1天 DateTime plusDuration dt.plus(new Duration(24L * 60L * 60L * 1000L)); System.out.println(plusDuration); // Duration的方式1天三: Joda-time使用的理念 不可变性Immutability瞬间性Instant局部性Partial年表Chronology时区Time zone 不可变Joda-time的类具有不可变性因此它们的实例无法被修改。不可变类的一个优点就是它们是线程 安全 的。用于处理日期计算的 API 方法全部返回一个对应 Joda-time 类的新实例同时保持原始实例不变。当我们通过一个 API 方法操作 Joda 类时我们必须捕捉该方法的返回值因为我们正在处理的实例不能被修改。你可能对这种模式很熟悉这正是 java.lang.String 的各种操作方法的工作 方式。 瞬间性Instant 表示时间上的某个精确的时刻使用从 epoch 开始计算的毫秒表示。这一定义与 JDK 相同这就是为什么任何 Joda Instant 子类都可以与 JDK Date 和 Calendar 类兼容的原因。更通用一点的定义是一个瞬间 就是指时间线上只出现一次且唯一的一个时间点并且这种日期结构只能以一种有意义的方式出现一次。 局部性一个局部时间正如我将在本文中将其称为局部时间片段一样它指的是时间的一部分片段。瞬间性指定了与 epoch 相对的时间上的一个精确时刻与此相反局部时间片段指的是在时间上可以来回 “移动” 的一个时刻这样它便可以应用于多个实例。比如6 月 2 日 可以应用于任意一年的 6 月份使用 Gregorian 日历的第二天的任意瞬间。同样11:06 p.m. 可以应用于任意一年的任意一天并且每天只能使用一次。即使它们没有指定一个时间上的精确时刻局部时间片段仍然是有用的。我喜欢将局部时间片段看作一个重复周期中的一点这样的话如果我正在考虑的日期构建可以以一种有意义的方式出现多次即重复的那么它就是一个局部时间。 年表Joda 本质——以及其设计核心——的关键就是年表它的含义由一个同名抽象类捕捉。从根本上讲年表是一种日历系统——种计算时间的特殊方式——并且是一种在其中执行日历 算法 的框架。受 Joda 支持的年表的例子包括ISO默认、Coptic、Julian、Islamic等。 时区时区是值一个相对于英国格林威治的地理位置用于计算时间。要了解事件发生的精确时间还必须知道发生此事件的位置。任何严格的时间计算都必须涉及时区或相对于 GMT除非在同一个时区内发生了相对时间计算即时这样时区也很重要如果事件对于位于另一个时区的各方存在利益关系的话。DateTimeZone 是 Joda 库用于封装位置概念的类。许多日期和时间计算都可以在不涉及时区的情况下完成但是仍然需要了解 DateTimeZone 如何影响 Joda 的操作。默认时间即从运行代码的机器的系统时钟检索到的时间在大部分情况下被使用。好了, 我所了解的就是这么多, 我主要还是从如何使用的角度去学习这个东西, 最后总结了它的几个特性, 当然Joda-Time的强大之处远不止这些, 大家在以后的工作中可以尝试着去使用它.
http://www.zqtcl.cn/news/535048/

相关文章:

  • 建分类信息网站西安高端模板建站
  • 南昌做网站哪家好成都三合一网站建设
  • 中国市政建设局网站做外单网站
  • 做本地网站赚钱吗wordpress 预约系统
  • 国外做名片网站优化网站最好的刷排名软件
  • 江西建设部网站网易企业邮箱密码格式
  • 网站哪个服务器好软装设计培训机构
  • 夜间正能量网站入口免费下载2022最新泛站群程序
  • 网站建设个人简历wordpress手写字体
  • 专门做商标的网站有哪些wordpress新文章加new
  • 全国商务网站大全木樨园网站建设公司
  • 网站搜索排名和什么有关系嘉兴建设局网站
  • 创建免费网站注意事项电商网站建设价格低
  • 网站开发接私单企业软文范例
  • 浙江省建设培训中心网站首页wordpress如何修改上传文件大小
  • 网站建设需要什么语言学完html怎么做网站
  • 国内外网站建设wordpress评论嵌套样式修改
  • 广州网站制作系统市场监督管理局投诉电话
  • 局域网建网站的详细步骤海南省建设网站的公司
  • 长沙市网站建设推广绵阳网站推广排名
  • 美容手机网站模板招标
  • 怎样用虚拟主机建网站访客可以用微信回复wordpress
  • 什么做网站做个网站一般要多少钱啊做网站界面尺寸
  • 装修网站怎样做网站中如何做图片轮播
  • 未备案网站如何加cdn河北网站制作
  • 出版社网站建设方案微信公众号h5网站开发
  • 南京建行网站云主机开网站教程
  • 炫酷表白网站在线制作微网站栏目图标
  • 西安做兼职网站设计昆山做网站的公司有哪些
  • vue手机网站开发买域名价格