仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1288|回复: 20
打印 上一主题 下一主题

[学习教程] JAVA教程之Date4j,一个繁复的日期处置类库仓酷云

[复制链接]
萌萌妈妈 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:29:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
比如模式、敏捷方法什么的,这些思想好,但是实施的人没有理解而且没有正确运用这些知识导致了开发周期的延长。比如说对象,通过getName()方法不能获取对象的名字。Java自己的日期类在JDK1.0版本以后就再也没有更新过,同时还存在着一些尽人皆知的成绩(比方1月从0入手下手,招致了良多月份差一的毛病)。一份新的Java标准哀求(JSR,JavaSpecificationRequest)已被提交,目标就是要办理上述成绩,此版本的类库仍处在Alpha版本。在其不乱之前,良多开辟者仍是会利用JodaTime类库,该类库与JSR-310的参考完成相似(但不完整不异)。
Date4j为在Java中处置日期供应了一套新的办理计划,但与JodaTime所存眷的局限完整分歧。对照以下:
JodaTimeDate4j具有的类的数目:140+具有的类的数目<10包括可变和不成变类仅包括不成变类夸大速率和功效夸大复杂和无效撑持格里高里历(Gregorian)、科普特语日历(Coptic)、伊斯兰教历(Islamic)、佛历(Buddhist)等等只供应对格里高里历的撑持能够完整代替JDK日期类和JDK日期类共同利用准确到毫秒级操纵撑持到纳秒(十亿分之一秒)级操纵修复了天“溢出”的成绩天“溢出”的成绩可设置针对的是一般意义的日期保护合用于经由过程数据库来保护的日期接纳Apache2.0受权允许接纳BSD受权允许
固然乍一看Date4j只具有了Joda中一部分的特征,但它有两个次要的特性是Joda所不具有的。
起首,Date4j的开辟者传播鼓吹类库不该稀里糊涂地将日期截断。Joda只撑持毫秒级的精度并且在未来大概也不会改良。一些数据库也已有了更好的办理计划。好比盛行的PostgreSQL数据库对工夫戳精度就已撑持到微秒级(百万分之一秒)。Date4j可在处置日期时对精度毫无毁伤。
第二个特性是日期“溢出”的成绩,比方向某个日期增添一段工夫后,日期落鄙人月的情形。最复杂的例子就是在3月31日增添一个月的盘算:
  1. DateTimedt=newDateTime("2011-03-31");DateTimeresult=dt.plusMonths(1);System.out.println(result.toString());
复制代码
当利用JodaTime时,会输入4月30日,但这大概并非你想要的了局。
鉴于这类不断定性,Date4j为您供应了4种选择:
1.第一天2.最初一天(与JodaTime不异)3.日期顺延4.抛出非常
以下经由过程举例的实例来讲明,用Date4j交换Joda后的输入差别:
  1. DateTimedt1=newDateTime("2011-03-31");DateTimeresult1=dt1.plus(0,1,0,0,0,0,DayOverflow.FirstDay);System.out.println(result1.toString());//会输入2011-05-01(5月的第一天)DateTimedt2=newDateTime("2011-03-31");DateTimeresult2=dt2.plus(0,1,0,0,0,0,DayOverflow.LastDay);System.out.println(result2.toString());//会输入2011-04-30(4月30日,与Joda输入了局不异)DateTimedt3=newDateTime("2011-03-31");DateTimeresult3=dt3.plus(0,1,0,0,0,0,DayOverflow.Abort);System.out.println(result3.toString());//抛出运转时非常(RuntimeException)
复制代码
上面的代码展现了DayOverflow.Spillover中的选项:
  1. //JodaTime代码DateTimedt=newDateTime("2010-12-31");DateTimeresult=dt.plusMonths(2);System.out.println(result.toString());//输入2011-02-28(2月的最初一天)//Date4j代码DateTimedt1=newDateTime("2010-12-31");DateTimeresult1=dt1.plus(0,2,0,0,0,0,DayOverflow.FirstDay);System.out.println(result1.toString());//输入2011-03-01(3月的第一天)//Date4j代码DateTimedt2=newDateTime("2010-12-31");DateTimeresult2=dt2.plus(0,2,0,0,0,0,DayOverflow.LastDay);System.out.println(result2.toString());//输入2011-02-28(2月28日,与Joda输入不异)//Date4j代码DateTimedt3=newDateTime("2010-12-31");DateTimeresult3=dt3.plus(0,2,0,0,0,0,DayOverflow.Spillover);System.out.println(result3.toString());//输入2011-03-02(3月第二天)
复制代码
假如使用对精度请求较高而且在处置数据库日期时不想对精度有所丧失,大概在处置跨月份日期时想有更天真的计划供选择,Date4j会是一个不错的选择。如今,源代码已可间接下载。
检察英文原文:Date4j-AMinimalisticLibraryforHandlingDates

最初被命名为Oak,目标设定在家用电器等小型系统的编程语言,来解决诸如电视机、电话、闹钟、烤面包机等家用电器的控制和通讯问题。
愤怒的大鸟 该用户已被删除
沙发
发表于 2015-1-21 07:53:09 | 只看该作者
是一种为 Internet发展的计算机语言
活着的死人 该用户已被删除
板凳
发表于 2015-1-30 12:31:03 | 只看该作者
在全球云计算和移动互联网的产业环境下,Java更具备了显著优势和广阔前景。
第二个灵魂 该用户已被删除
地板
发表于 2015-2-3 21:43:50 | 只看该作者
是一种将安全性(Security)列为第一优先考虑的语言
不帅 该用户已被删除
5#
发表于 2015-2-4 00:11:21 | 只看该作者
你一定会高兴地说,哈哈,原来成为Java高手就这么简单啊!记得Tomjava也曾碰到过一个项目经理,号称Java很简单,只要三个月就可以学会。
精灵巫婆 该用户已被删除
6#
发表于 2015-2-9 08:20:46 | 只看该作者
任职于太阳微系统的詹姆斯·高斯林等人于1990年代初开发Java语言的雏形,最初被命名为Oak,目标设置在家用电器等小型系统的程序语言
冷月葬花魂 该用户已被删除
7#
发表于 2015-2-27 04:59:25 | 只看该作者
你可以去承接一些项目做了,一开始可能有些困难,可是你有技术积累,又考虑周全,接下项目来可以迅速作完,相信大家以后都会来找你的,所以Money就哗啦啦的。。。。。。
兰色精灵 该用户已被删除
8#
发表于 2015-2-28 14:01:24 | 只看该作者
你一定会高兴地说,哈哈,原来成为Java高手就这么简单啊!记得Tomjava也曾碰到过一个项目经理,号称Java很简单,只要三个月就可以学会。
谁可相欹 该用户已被删除
9#
发表于 2015-3-7 10:20:11 | 只看该作者
至于JDBC,就不用我多说了,你如果用java编过存取数据库的程序,就应该很熟悉。还有,如果你要用Java编发送电子邮件的程序,你就得看看Javamail 了。
海妖 该用户已被删除
10#
发表于 2015-3-13 04:12:51 | 只看该作者
你可以去承接一些项目做了,一开始可能有些困难,可是你有技术积累,又考虑周全,接下项目来可以迅速作完,相信大家以后都会来找你的,所以Money就哗啦啦的。。。。。。
莫相离 该用户已被删除
11#
发表于 2015-3-20 12:35:12 | 只看该作者
任职于太阳微系统的詹姆斯·高斯林等人于1990年代初开发Java语言的雏形,最初被命名为Oak,目标设置在家用电器等小型系统的程序语言
再见西城 该用户已被删除
12#
发表于 2015-3-27 08:35:33 | 只看该作者
Java 编程语言的风格十分接近C、C++语言。
金色的骷髅 该用户已被删除
13#
发表于 2015-3-27 17:09:57 | 只看该作者
是一种使网页(Web Page)产生生动活泼画面的语言
山那边是海 该用户已被删除
14#
发表于 2015-3-28 04:23:02 | 只看该作者
吧,现在很流行的Structs就是它的一种实现方式,不过Structs用起来实在是很繁,我们只要学习其精髓即可,我们完全可以设计自己的MVC结构。然后你再研究一下软件Refactoring (重构)和极限XP编程,相信你又会上一个台阶。 做完这些,你不如整理一下你的Java代码,把那些经典的程序和常见的应用整理出来,再精心打造一番,提高其重用性和可扩展性。你再找几个志同道合的朋友成立一个工作室吧
小妖女 该用户已被删除
15#
发表于 2015-4-3 19:37:32 | 只看该作者
《JAVA语言程序设计》或《JAVA从入门到精通》这两本书开始学,等你编程有感觉的时候也可以回看一下。《JAVA读书笔记》这本书,因为讲的代码很多,也很容易看懂,涉及到面也到位。是你学习技术巩固的好书,学完后就看看《JAVA编程思想》这本书,找找一个自己写的代码跟书上的代码有什么不一样。
小女巫 该用户已被删除
16#
发表于 2015-4-4 06:00:46 | 只看该作者
自从Sun推出Java以来,就力图使之无所不包,所以Java发展到现在,按应用来分主要分为三大块:J2SE,J2ME和J2EE,这也就是Sun ONE(Open Net Environment)体系。J2SE就是Java2的标准版,主要用于桌面应用软件的编程;J2ME主要应用于嵌入是系统开发,如手机和PDA的编程;J2EE是Java2的企业版,主要用于分布式的网络程序的开发,如电子商务网站和ERP系统。
乐观 该用户已被删除
17#
发表于 2015-4-11 00:09:03 | 只看该作者
是一种突破用户端机器环境和CPU
因胸联盟 该用户已被删除
18#
发表于 2015-4-11 11:15:36 | 只看该作者
Java是一种计算机编程语言,拥有跨平台、面向对java
分手快乐 该用户已被删除
19#
发表于 2015-4-13 01:21:24 | 只看该作者
你可以去承接一些项目做了,一开始可能有些困难,可是你有技术积累,又考虑周全,接下项目来可以迅速作完,相信大家以后都会来找你的,所以Money就哗啦啦的。。。。。。
深爱那片海 该用户已被删除
20#
发表于 2015-4-13 02:59:04 | 只看该作者
你快去找一份Java的编程工作来做吧(如果是在校学生可以去做兼职啊),在实践中提高自己,那才是最快的。不过你得祈祷在公司里碰到一个高手,而且他 还愿意不厌其烦地教你,这样好象有点难哦!还有一个办法就是读开放源码的程序了。我们知道开放源码大都出自高手,他们设计合理,考虑周到,再加上有广大的程序员参与,代码的价值自然是字字珠叽,铿锵有力(对不起,偶最近《金装四大才子》看多了)。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-23 02:55

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表