楔子
Joda的妙用,计算
黑色星期五(在西方,13号正逢星期五,被称为“黑色星期五”。)
Joda是线程安全的
code
/**
* 计算10年内的黑色星期五
*/
private static void easyCal() {
MutableDateTime time = new MutableDateTime();
DateTime plusYears = dateTime.plusYears(10);
System.out.println(time.toString("yyyy-MM-dd"));
while (time.isBefore(plusYears)) {
if (time.dayOfMonth().get() == 13 && time.getDayOfWeek() == 5) {
// 计算10年内的黑色星期5
System.out.println("黑色星期5-->" + time.toString(formatYmdHms));
}
// 循环一次加一天
time.addDays`
1);
}
}
<!--
需要注意的是,DateTime是一个不可变类型,与String非常类似,
即使是plusXXX、minusXXX等操作,DateTime对象仍然不会变,只是新生
成一个DateTime对象。
但是,Joda也提供了一个可变类型的日期对象:MutableDateTime
类,这样,日期操作更加方便了。
-->
joda其他例子
日期之间差计算
/**
* 日期计算
*/
private static void calDate() {
// 加上100小时是星期几
dateTime.plusHours(100).dayOfWeek().getAsShortText();
// 100天后今天
String string2 = dateTime.plusDays(100).toString(formatYmdHms);
// 相差天数
Days.daysBetween(dateTime, new DateTime().plusDays(200));
}
时区
/**
* 时区
*/
private static void localDemo() {
DateTime dt = new DateTime();
// 此时东京时间
DateTime withZone = dt.withZone(DateTimeZone.forID("Asia/Tokyo"));
// 计算标准时间
DateTime timeUTC = dt.withZone(DateTimeZone.UTC);
System.out.println("当地时间-->" + dt.toString(formatYmdHms));
System.out.println("标准时间-->" + timeUTC.toString(formatYmdHms));
}
JDK时间Joda时间互转
/**
* joda与jdk时间转换
*/
private static void convertDateJodaToJkd() {
DateTime dt = new DateTime();
// Joda转JDK 的date
Date date = dt.toDate();
// jdk 时间转joda
DateTime time = new DateTime(date);
}