Java之Joda工具包处理时间的7点总结分享

开心一笑

【颜宇扬考了最后一名,在家长会后,写了期末总结:1)有本事冲我来,别在家长会上吓唬我爸!2)期末考试成绩出来了,我觉得我妈生二台是非常明智的选择。3)这场考试对于我的意义就是知道了班级到底有多少人。4)期末考试不给老师们露一手,他们还真以为自己教的好。我想说:孩子没事,这么可爱,哥教你......】

冬季唯美图片

提出问题

Joda Time日期时间工具包比较好用的类有哪些???

解决问题

1.Joda简单介绍

Joda-Time,一个面向Java平台的易于使用的开源时间/日期库。处理时间的工具包有很多,JDK的Calendar和Apache-Commons-Lang的DateUtils都有提供相关好用的API,但是对比下Joda-Time,最好我还是选择它。因为它提供更优雅的编程,更简洁的代码,和更强大的时间处理。总而言之,它是非常好用的

2.Maven引入

Maven引入很简单,就不说了

<!-- https://mvnrepository.com/artifact/joda-time/joda-time -->
<dependency>
    <groupId>joda-time</groupId>
    <artifactId>joda-time</artifactId>
    <version>2.9.6</version>
</dependency>

3.关于日期处理的框架考虑

在一个公司的框架中,不一定说我们就得使用Joda Time来处理时间。我们还是得按照公司的规范来。我发现我们公司对于日期处理,有人使用JDK的Calendar,有人使用Commons-Lang的DateUtils,甚至还有人自己封装日期处理工具类,自己造轮子,而我是渐渐使用Joda-Time,被它迷人的身躯所吸引而一发不可收拾。在这里我想说的是:

在项目框架中,我们应该统一使用一种日期处理工具,而不要混着用。

4.Joda和JDK互操作性

Joda 的类能够生成java.util.Date的实例(和 Calendar)。这使我们能够保留现有的依赖JDK的代码,但是又能够使用Joda处理复杂的日期/时间计算。这一点在下面会有更多的
描述。

5.创建Joda-Time对象

5.1最简单的构造DateTime形式:

DateTime dateTime = new DateTime();

5.2通过指定字段值构建了一个 DateTime 对象

DateTime dateTime = new DateTime(
  2000, //year
  1,    // month
  1,    // day
  0,    // hour (midnight is zero)
  0,    // minute
  0,    // second
  0     // milliseconds
);

5.3将Date对象直接传递给构造函数

Date jdkDate = new Date();
//转化为Joda对象
DateTime dateTime = new DateTime(jdkDate);
//转化为JDK对象
Date changeToJdkDate = dateTime.toDate();

5.4直接将不同对象传递给DateTime的构造函数

// Use a Calendar
java.util.Calendar calendar = obtainCalendarSomehow();
dateTime = new DateTime(calendar);
// Use another Joda DateTime
DateTime anotherDateTime = obtainDateTimeSomehow();
dateTime = new DateTime(anotherDateTime);
// Use a String (must be formatted properly)
String timeString = "2006-01-26T13:30:00-06:00";
dateTime = new DateTime(timeString);
timeString = "2006-01-26";
dateTime = new DateTime(timeString);

6.一个简单的例子

网上例子很多,我就不写了,我就简单的引用网上的一个例子,跟多内容,可以自己去学习。

例如:计算11月中第一个星期一之后的第一个星期二:

LocalDate now = SystemFactory.getClock().getLocalDate();
LocalDate electionDate = now.monthOfYear()
 .setCopy(11)        // November
 .dayOfMonth()       // Access Day Of Month Property
 .withMinimumValue() // Get its minimum value
 .plusDays(6)        // Add 6 days
 .dayOfWeek()        // Access Day Of Week Property
 .setCopy("Monday")  // Set to Monday (it will round down)
 .plusDays(1);       // Gives us Tuesday

.setCopy("Monday") 是整个计算的关键。不管中间 LocalDate 值是多少,将其 dayOfWeek 属性设置为 Monday 总是能够四舍五入,这样的话,在每月的开始再加上 6 天就能够让您得到第一个星期一。再加上一天就得到第一个星期二。Joda 使得执行此类计算变得非常容易。

7.以Joda方式格式化时间

7.1 传递 SimpleDateFormat 字符串

DateTime dateTime = SystemFactory.getClock().getDateTime();
dateTime.toString("MM/dd/yyyy hh:mm:ss.SSSa");
dateTime.toString("dd-MM-yyyy HH:mm:ss");
dateTime.toString("EEEE dd MMMM, yyyy HH:mm:ssa");
dateTime.toString("MM/dd/yyyy HH:mm ZZZZ");
dateTime.toString("MM/dd/yyyy HH:mm Z");

09/06/2009 02:30:00.000PM
06-Sep-2009 14:30:00
Sunday 06 September, 2009 14:30:00PM
09/06/2009 14:30 America/Chicago
09/06/2009 14:30 -0500

读书感悟

来自马歇尔·卢森堡《非暴力沟通》

  • 如果真的想过上悲惨生活,就去与他人作比较。
  • 非暴力沟通的四个要素:1、观察;2、感受;3、需要;4、请求。
  • 在一个生气的人面前,永远不要用“不过”“可是”“但是”之类的词语。
  • 所有愤怒的核心是需求没有被满足。
  • 批评往往暗含着期待。对他人的批评实际上间接表达了我们尚未满足的需要。
  • 让梦想中的世界通过我们的转变得以实现,我相信,除非从我做起,我们的梦想就不可能实现,不幸的是,我们总是希望别人先开始改变。

经典故事

【两个人在森林里,遇到了一只大老虎。A就赶紧从背后取下一双更轻便的运动鞋换上。B急死了,骂道:“你干嘛呢,再换鞋也跑不过老虎啊!”
A说:“我只要跑得比你快就好了。”】

大神文章

【1】Joda-Time 简介
【2】http://mvnrepository.com/artifact/joda-time
【3】Joda-Time 简介(引用) / 例子Example(自己)/ 官网例子
【4】日期工具类 - DateUtil.java

冬季唯美图片

其他

如果有带给你一丝丝小快乐,就让快乐继续传递下去,欢迎点赞、顶、欢迎留下宝贵的意见、多谢支持!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,530评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 86,403评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,120评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,770评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,758评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,649评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,021评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,675评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,931评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,659评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,751评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,410评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,004评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,969评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,042评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,493评论 2 343

推荐阅读更多精彩内容

  • 简介 在Java中处理日期和时间是很常见的需求,基础的工具类就是我们熟悉的Date和Calendar,然而这些工具...
    JohnShen阅读 99,688评论 5 44
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,594评论 18 139
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,433评论 25 707
  • Oracle触发器 Demo(通过触发器结合创建序列(sequence)的方式实现字段递增) Mysql 触发器(...
    子喻爱吃黄焖鸡阅读 1,058评论 0 0
  • 题目链接:搜索一·24点 dfs: 题目链接:搜索二·骑士问题 bfs: 题目链接:搜索三·八数码问题 bfs:
    fo0Old阅读 326评论 0 0