<dependency>
<groupId>joda-timegroupId>
<artifactId>joda-timeartifactId>
<version>2.10.2version>
dependency>
DateTime dateTime = new DateTime();
System.out.println(dateTime.toString("yyyy-MM-dd"));
DateTime dateTime = new DateTime(2017, 11, 27, 14, 30, 50, 500);
System.out.println(dateTime.toString("yyyy-MM-dd HH:mm:ss.SSS"));
// java.util.Date 转 DateTime
DateTime dateTime = new DateTime(new Date());
System.out.println(dateTime.toString("yyyy-MM-dd HH:mm:ss.SSS"));
// 将字符串转换为时间
DateTimeFormatter formatter = DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss SSS");
DateTime dateTime = formatter.parseDateTime("2019-07-09 16:20:20 123");
// 将时间转换为字符串
DateTime dateTime = new DateTime();
String dateString = dateTime.toString("yyyy-MM-dd");
System.out.println(dateString);
DateTimeFormatter forPattern = DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss.SSS");
dateString = forPattern.print(dateTime);
System.out.println(dateString);
DateTime now = new DateTime();
DateTime yesterday = now.minusDays(1);
System.out.println(now.toString("yyyy-MM-dd HH:mm:ss.SSS"));
System.out.println(yesterday.toString("yyyy-MM-dd HH:mm:ss.SSS"));
// 日期 now 是否在 yesterday 之前
System.out.println(now.isBefore(yesterday));
// 日期 now 是否在当前时间之前
System.out.println(now.isBeforeNow());
System.out.println(now.isAfter(yesterday));
System.out.println(now.isAfterNow());
DateTime dateTime = new DateTime();
// 当前日期
System.out.println(dateTime.toString("yyyy-MM-dd"));
System.out.println();
// 一周中的第几天
System.out.println(dateTime.getDayOfWeek());
// 当前日期所在周的周一
System.out.println(dateTime.dayOfWeek().withMinimumValue().toString("yyyy-MM-dd"));
// 当前日期所在周的周天
System.out.println(dateTime.dayOfWeek().withMaximumValue().toString("yyyy-MM-dd"));
System.out.println();
// 当前日期在当前月的第几天
System.out.println(dateTime.getDayOfMonth());
// 当前日期所在当前月的第一天
System.out.println(dateTime.dayOfMonth().withMinimumValue().toString("yyyy-MM-dd"));
// 当前日期所在当前月的最后一天
System.out.println(dateTime.dayOfMonth().withMaximumValue().toString("yyyy-MM-dd"));
System.out.println();
// 当前日期在当前年的第几天
System.out.println(dateTime.getDayOfYear());
// 当前日期所在当前年的第一天
System.out.println(dateTime.dayOfYear().withMinimumValue().toString("yyyy-MM-dd"));
// 当前日期所在当前年的最后一天
System.out.println(dateTime.dayOfYear().withMaximumValue().toString("yyyy-MM-dd"));
DateTime dateTime = new DateTime();
// 当前日期
System.out.println(dateTime.toString("yyyy-MM-dd"));
System.out.println();
// 加、减一年
System.out.println(dateTime.plusYears(1).toString("yyyy-MM-dd HH:mm:ss.SSS"));
System.out.println(dateTime.minusYears(1).toString("yyyy-MM-dd HH:mm:ss.SSS"));
// 加、减一月
System.out.println(dateTime.plusMonths(1).toString("yyyy-MM-dd HH:mm:ss.SSS"));
System.out.println(dateTime.minusMonths(1).toString("yyyy-MM-dd HH:mm:ss.SSS"));
// 加、减一天
System.out.println(dateTime.plusDays(1).toString("yyyy-MM-dd HH:mm:ss.SSS"));
System.out.println(dateTime.minusDays(1).toString("yyyy-MM-dd HH:mm:ss.SSS"));
// 加、减一小时
System.out.println(dateTime.plusHours(1).toString("yyyy-MM-dd HH:mm:ss.SSS"));
System.out.println(dateTime.minusHours(1).toString("yyyy-MM-dd HH:mm:ss.SSS"));
// 加、减一分钟
System.out.println(dateTime.plusMinutes(1).toString("yyyy-MM-dd HH:mm:ss.SSS"));
System.out.println(dateTime.minusMinutes(1).toString("yyyy-MM-dd HH:mm:ss.SSS"));
// 加、减一秒
System.out.println(dateTime.plusSeconds(1).toString("yyyy-MM-dd HH:mm:ss.SSS"));
System.out.println(dateTime.minusSeconds(1).toString("yyyy-MM-dd HH:mm:ss.SSS"));
// 加、减一毫秒
System.out.println(dateTime.plusMillis(1).toString("yyyy-MM-dd HH:mm:ss.SSS"));
System.out.println(dateTime.minusMillis(1).toString("yyyy-MM-dd HH:mm:ss.SSS"));
DateTime dateTime = new DateTime();
// 当前日期
System.out.println(dateTime.toString("yyyy-MM-dd"));
System.out.println();
// 得到当前日期所在周的上一周的第一天(上N周为 minusWeeks(n))
System.out.println(dateTime.dayOfWeek().withMinimumValue().minusWeeks(1).toString("yyyy-MM-dd"));
// 得到当前日期所在周的上一周的最后一天
System.out.println(dateTime.dayOfWeek().withMaximumValue().minusWeeks(1).toString("yyyy-MM-dd"));
// 得到当前日期所在周的下一周的第一天(下N周为 plusWeeks(n))
System.out.println(dateTime.dayOfWeek().withMinimumValue().plusWeeks(1).toString("yyyy-MM-dd"));
// 得到当前日期所在周的下一周的最后一天
System.out.println(dateTime.dayOfWeek().withMaximumValue().plusWeeks(1).toString("yyyy-MM-dd"));
// 得到当前日期所在月的上一月的第一天(上 N 月为 minusMonths(n))
System.out.println(dateTime.dayOfMonth().withMinimumValue().minusMonths(1).toString("yyyy-MM-dd"));
// 得到当前日期所在月的上一月的最后一天
System.out.println(dateTime.dayOfMonth().withMaximumValue().minusMonths(1).toString("yyyy-MM-dd"));
// 得到当前日期所在月的上一月的第一天(下 N 月为 plusMonths(n))
System.out.println(dateTime.dayOfMonth().withMinimumValue().plusMonths(1).toString("yyyy-MM-dd"));
// 得到当前日期所在月的上一月的最后一天
System.out.println(dateTime.dayOfMonth().withMaximumValue().plusMonths(1).toString("yyyy-MM-dd"));
DateTime dateTime = new DateTime();
// 当前日期
System.out.println(dateTime.toString("yyyy-MM-dd"));
// 去年
DateTime lastYear = dateTime.plusYears(1);
// 计算两个日期相差多少年
System.out.println(Years.yearsBetween(dateTime, lastYear).getYears());
// 计算两个日期相差多少月
System.out.println(Months.monthsBetween(dateTime, lastYear).getMonths());
// 计算两个日期相差多少天
System.out.println(Days.daysBetween(dateTime, lastYear).getDays());
DateTime today = new DateTime();
// 当前日期
System.out.println(today.toString("yyyy-MM-dd HH:mm:ss.SSS"));
// 当前日期的上一天(昨天)
DateTime yesterday = today.plusDays(1);
// 计算两个日期相差多少小时
System.out.println(Hours.hoursBetween(today, yesterday).getHours());
// 计算两个日期相差多少分钟
System.out.println(Minutes.minutesBetween(today, yesterday).getMinutes());
// 计算两个日期相差多少秒
System.out.println(Seconds.secondsBetween(today, yesterday).getSeconds());
// 方式1
DateTime dateTime = new DateTime();
// 当前日期
System.out.println(dateTime.toString("yyyy-MM-dd"));
// 将当前日期的天设置为 20 号
System.out.println(dateTime.dayOfMonth().setCopy(20).toString("yyyy-MM-dd"));
// 将当前日期的月份设置为 3
System.out.println(dateTime.monthOfYear().setCopy(3).toString("yyyy-MM-dd"));
// 将当前日期的年份设置为 2000
System.out.println(dateTime.year().setCopy(2000).toString("yyyy-MM-dd"));
// 方式2
DateTime dateTime = new DateTime();
System.out.println(dateTime.toString("yyyy-MM-dd HH:mm:ss.SSS"));
// 将 dateTime 日期的年份位设置为 2000
dateTime = dateTime.withYear(2000);
// 将 dateTime 日期的月份位设置为 10
dateTime = dateTime.withMonthOfYear(10);
dateTime = dateTime.withDayOfMonth(1);
dateTime = dateTime.withHourOfDay(20);
dateTime = dateTime.withMinuteOfHour(20);
dateTime = dateTime.withSecondOfMinute(15);
dateTime = dateTime.withMillisOfSecond(100);
System.out.println(dateTime.toString("yyyy-MM-dd HH:mm:ss.SSS"));
DateTime dateTime = new DateTime();
// 当前日期
System.out.println(dateTime.toString("yyyy-MM-dd"));
// 判断是否是闰年
System.out.println(dateTime.year().isLeap());
// 判断是否是闰月
System.out.println(dateTime.monthOfYear().isLeap());
String formatter="yyyy-MM-dd HH:mm:ss";
// 获取一天的开始时间
System.out.println(dateTime.withTimeAtStartOfDay().toString(formatter));
// 获取一天的结束时间
System.out.println(dateTime.millisOfDay().withMaximumValue().toString(formatter));
DateTime dateTime = new DateTime();
System.out.println(dateTime.toString("yyyy-MM-dd HH:mm:ss.SSS"));
System.out.println(dateTime.dayOfWeek().roundCeilingCopy().toString("yyyy-MM-dd HH:mm:ss.SSS"));
System.out.println(dateTime.dayOfWeek().roundFloorCopy().toString("yyyy-MM-dd HH:mm:ss.SSS"));
System.out.println();
System.out.println(dateTime.minuteOfDay().roundCeilingCopy().toString("yyyy-MM-dd HH:mm:ss.SSS"));
System.out.println(dateTime.minuteOfDay().roundFloorCopy().toString("yyyy-MM-dd HH:mm:ss.SSS"));
System.out.println();
System.out.println(dateTime.secondOfMinute().roundCeilingCopy().toString("yyyy-MM-dd HH:mm:ss.SSS"));
System.out.println(dateTime.secondOfMinute().roundFloorCopy().toString("yyyy-MM-dd HH:mm:ss.SSS"));
程序运行输出
2019-07-09 20:51:45.193
2019-07-10 00:00:00.000
2019-07-09 00:00:00.000
2019-07-09 20:52:00.000
2019-07-09 20:51:00.000
2019-07-09 20:51:46.000
2019-07-09 20:51:45.000
/**
* 获取 year 年 第 month 月 的第 week 周的 周几(weekIndex)
*
* 获取 2019 年 7 月份 第 3 周的 周三 的日期
* obtainDate("2019", 7, 3, 3);
* */
public static DateTime obtainDate(String year, int month, int week, int weekIndex) {
String date = MessageFormat.format("{0}-01-01", year);
DateTimeFormatter formatter = DateTimeFormat.forPattern("yyyy-MM-dd");
DateTime dateTime = DateTime.parse(date, formatter);
dateTime = dateTime.
monthOfYear().setCopy(month). // 设置月份为 month 月
dayOfMonth().withMinimumValue(). // 获取 month 月的第一天的日期
plusDays((week - 1) * 7). // 在 month 月第一天基础上加上 n 天
withDayOfWeek(weekIndex); // 设置为周几
return dateTime;
}