1700452904
编写高质量代码:改善Java程序的151个建议 建议142:推荐使用Joda日期时间扩展包
1700452905
1700452906
开发一个项目必然要和日期时间打交道,特别是一些全球性的项目,必须要考虑语言和时区问题,但是在JDK中,日期时间的操作比较麻烦,例如1000小时后是星期几,伦敦时间是几点等,这里介绍一下通过Joda开源包来操作时间的方法,非常简单方便。
1700452907
1700452908
(1)本地格式的日期时间
1700452909
1700452910
依据操作系统或指定的区域输出日期或时间,例如:
1700452911
1700452912
//当前时间戳
1700452913
1700452914
DateTime dt=new DateTime();
1700452915
1700452916
//输出英文星期
1700452917
1700452918
dt.dayOfWeek().getAsText(Locale.ENGLISH);
1700452919
1700452920
//本地日期格式
1700452921
1700452922
dt.toLocalDate();
1700452923
1700452924
//日期格式化
1700452925
1700452926
dt.toString(DateTimeFormat.forPattern(“yyyy年M月d日”));
1700452927
1700452928
(2)日期计算
1700452929
1700452930
这是Joda最方便的地方,也是JDK最麻烦的地方,比如我们要计算100天后是星期几,直接使用JDK提供的日期类会非常麻烦,使用Joda就简单很多,例如:
1700452931
1700452932
//当前时间戳
1700452933
1700452934
DateTime dt=new DateTime();
1700452935
1700452936
//加100小时是星期几
1700452937
1700452938
dt.plusHours(100).dayOfWeek();
1700452939
1700452940
//100天后的日期
1700452941
1700452942
dt.plusDays(100).toLocalDate();
1700452943
1700452944
//10年前的今天是星期几
1700452945
1700452946
dt.minusYears(10).dayOfWeek().getAsText();
1700452947
1700452948
//离地球毁灭还有多少小时
1700452949
1700452950
Hours.hoursBetween(dt, new DateTime(“2012-12-21”)).getHours();
1700452951
1700452952
这里需要注意的是,DateTime是一个不可变类型,与String非常类似,即使通过plusXXX、minusXX等方法进行操作,dt对象仍然不会变,只是新生成一个DateTime对象而已。但是,Joda也提供了一个可变类型的日期对象:MutableDateTime类,这样,日期的加减操作就更加方便了,比如列出10年内的黑色星期五,实现代码如下(此实现若用JDK的类来计算会异常复杂,读者可以尝试一下):
[
上一页 ]
[ :1.700452903e+09 ]
[
下一页 ]