调换JDK日期的开源项目:joda-time
添加时间:2013-5-17 点击量:
作为一名开辟者,我们不成避免的会应用日期API,若是您应用过JDK的API,或者您会发明JDK的API用的很别扭,尤其是在做日期运算和斗劲的时辰,幸好我们活在开源的世界,也有其他伴侣碰到同样的题目,是以joda-time就如许应运而生,jotat-time就是为了简化日期的操纵而创建的一个开源项目,正如您期望中的那样,它极大的简化了日期的操纵。
日期API的常用应用的几个方面首要有以下几个:
A.机关一个日期
B.对日期进交运算和斗劲
C.日期的格局化输出
A.机关一个日期
基于上方的API,您就可以便利的指定年代日、时分秒或者毫秒数来构建一个日期,但这里要重点存眷的是第五个API:
public DateTime(Object instant),这个机关函数传递一个Object对象,这个对象可所以以下几个类型:
ReadableInstant
String(可以被ISODateTimeFormat#dateTimeParser()解析的字符串)
Calendar
Date (includes sql package subclasses)
Long (milliseconds)
null (当前时候)
示例如下:
DateTime dateTime = new DateTime(new Date());
DateTime dateTime = new DateTime(Calendar.getInstance());
DateTime dateTime = new DateTime(2012-05-30T10:23:1);
B.对日期进交运算和斗劲
也许joda的机关函数只是简单的API调用,但对于日期的运算和斗劲,则是joda的强大之处,也是我们日常平凡应用最多的方面:
下面用一个例子来演示joda的强大之处:
策画11月中第一个礼拜一之后的第一个礼拜二
DateTime dateTime = new DateTime().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(礼拜一) // Set to Monday (it will round down)
.plusDays(1); // Gives us Tuesday
上方的一段代码中,第3行有一段dayOfMonth()的调用,joda称之为属性,类似于java的属性,基于这个属性,我们可以调用joda的API做一些日期的增减,获取最大最小值等操纵。
再看代码第七行 .setCopy(礼拜一),它是全部策画的关键,如许的话,在每月的开端再加上 6 天就可以或许让您获得第一个礼拜一。再加上一天就获得第一个礼拜二。这里应用参数 “礼拜一” 是和Locale相干的,建议可以应用1调换,若是您在美国地区,这个参数就须要设置为Monday
Joda 使得履行日期策画变得很是轻易,这就是joda的强大之处,想想如果应用jdk的日期API,得要几许步调才干完成上方的功能。
对于日期斗劲,joda-time也供给了一些API去进行常用日期斗劲,如:
C.日期的格局化输出
Joda的日期格局化供给了简单的API接口:toString(),若是你须要的话,也可以传一个ISO-8601或者一个JDK把握的字符串格局,来告诉API如何输出日期格局
1.应用ISO-8601
DateTime dateTime = new DateTime();
System.out.println(dateTime.toString(ISODateTimeFormat.basicDateTime()));
System.out.println(dateTime.toString(ISODateTimeFormat.basicDateTimeNoMillis()));
System.out.println(dateTime.toString(ISODateTimeFormat.basicWeekDateTime()));
以上代码输出:
20130516T192141.859+0800
20130516T192141+0800
2013W204T192141.859+0800
2.应用SimpleDateFormat字符串
System.out.println(dateTime.toString(MM/dd/yyyy hh:mm:ss.SSSa));
System.out.println(dateTime.toString(dd-MM-yyyy HH:mm:ss));
System.out.println(dateTime.toString(EEEE dd MMMM, yyyy HH:mm:ssa));
System.out.println(dateTime.toString(MM/dd/yyyy HH:mm ZZZZ));
System.out.println(dateTime.toString(MM/dd/yyyy HH:mm Z));
以上代码输出:
16-05-2013 19:25:12
礼拜四 16 蒲月, 2013 19:25:12下午
05/16/2013 19:25 Asia/Shanghai
05/16/2013 19:25 +0800
具体格局可以查看javadoc:DateTimeFormat
joda-time是一个轻量级的开源项目,用过jdk自带的日期API,再对比joda-time,你会发明两者在用户应用方面的重大差别,若是您用过joda-time,信赖您再也不会再想用JDK的日期API
文章参考:
http://h819.iteye.com/blog/611099
文艺不是炫耀,不是花哨空洞的文字堆砌,不是一张又一张的逆光照片,不是将旅行的意义转化为名牌包和明信片的物质展示;很多时候它甚至完全不美——它嘶吼、扭曲,它会痛苦地抽搐,它常常无言地沉默。——艾小柯《文艺是一种信仰》
作为一名开辟者,我们不成避免的会应用日期API,若是您应用过JDK的API,或者您会发明JDK的API用的很别扭,尤其是在做日期运算和斗劲的时辰,幸好我们活在开源的世界,也有其他伴侣碰到同样的题目,是以joda-time就如许应运而生,jotat-time就是为了简化日期的操纵而创建的一个开源项目,正如您期望中的那样,它极大的简化了日期的操纵。
日期API的常用应用的几个方面首要有以下几个:
A.机关一个日期
B.对日期进交运算和斗劲
C.日期的格局化输出
A.机关一个日期
基于上方的API,您就可以便利的指定年代日、时分秒或者毫秒数来构建一个日期,但这里要重点存眷的是第五个API:
public DateTime(Object instant),这个机关函数传递一个Object对象,这个对象可所以以下几个类型:
ReadableInstant
String(可以被ISODateTimeFormat#dateTimeParser()解析的字符串)
Calendar
Date (includes sql package subclasses)
Long (milliseconds)
null (当前时候)
String(可以被ISODateTimeFormat#dateTimeParser()解析的字符串)
Calendar
Date (includes sql package subclasses)
Long (milliseconds)
null (当前时候)
示例如下:
DateTime dateTime = new DateTime(new Date());
DateTime dateTime = new DateTime(Calendar.getInstance());
DateTime dateTime = new DateTime(2012-05-30T10:23:1);
B.对日期进交运算和斗劲
也许joda的机关函数只是简单的API调用,但对于日期的运算和斗劲,则是joda的强大之处,也是我们日常平凡应用最多的方面:
下面用一个例子来演示joda的强大之处:
策画11月中第一个礼拜一之后的第一个礼拜二
DateTime dateTime = new DateTime().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(礼拜一) // Set to Monday (it will round down)
.plusDays(1); // Gives us Tuesday
.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(礼拜一) // Set to Monday (it will round down)
.plusDays(1); // Gives us Tuesday
上方的一段代码中,第3行有一段dayOfMonth()的调用,joda称之为属性,类似于java的属性,基于这个属性,我们可以调用joda的API做一些日期的增减,获取最大最小值等操纵。
再看代码第七行 .setCopy(礼拜一),它是全部策画的关键,如许的话,在每月的开端再加上 6 天就可以或许让您获得第一个礼拜一。再加上一天就获得第一个礼拜二。这里应用参数 “礼拜一” 是和Locale相干的,建议可以应用1调换,若是您在美国地区,这个参数就须要设置为Monday
Joda 使得履行日期策画变得很是轻易,这就是joda的强大之处,想想如果应用jdk的日期API,得要几许步调才干完成上方的功能。
对于日期斗劲,joda-time也供给了一些API去进行常用日期斗劲,如:
C.日期的格局化输出
Joda的日期格局化供给了简单的API接口:toString(),若是你须要的话,也可以传一个ISO-8601或者一个JDK把握的字符串格局,来告诉API如何输出日期格局
1.应用ISO-8601
DateTime dateTime = new DateTime();
System.out.println(dateTime.toString(ISODateTimeFormat.basicDateTime()));
System.out.println(dateTime.toString(ISODateTimeFormat.basicDateTimeNoMillis()));
System.out.println(dateTime.toString(ISODateTimeFormat.basicWeekDateTime()));
以上代码输出:
20130516T192141.859+0800
20130516T192141+0800
2013W204T192141.859+0800
2.应用SimpleDateFormat字符串
System.out.println(dateTime.toString(MM/dd/yyyy hh:mm:ss.SSSa));
System.out.println(dateTime.toString(dd-MM-yyyy HH:mm:ss));
System.out.println(dateTime.toString(EEEE dd MMMM, yyyy HH:mm:ssa));
System.out.println(dateTime.toString(MM/dd/yyyy HH:mm ZZZZ));
System.out.println(dateTime.toString(MM/dd/yyyy HH:mm Z));
System.out.println(dateTime.toString(dd-MM-yyyy HH:mm:ss));
System.out.println(dateTime.toString(EEEE dd MMMM, yyyy HH:mm:ssa));
System.out.println(dateTime.toString(MM/dd/yyyy HH:mm ZZZZ));
System.out.println(dateTime.toString(MM/dd/yyyy HH:mm Z));
以上代码输出:
16-05-2013 19:25:12
礼拜四 16 蒲月, 2013 19:25:12下午
05/16/2013 19:25 Asia/Shanghai
05/16/2013 19:25 +0800
具体格局可以查看javadoc:DateTimeFormat
joda-time是一个轻量级的开源项目,用过jdk自带的日期API,再对比joda-time,你会发明两者在用户应用方面的重大差别,若是您用过joda-time,信赖您再也不会再想用JDK的日期API
文章参考:
http://h819.iteye.com/blog/611099