介绍一个很好用的JAVA时间工具:joda-time
1.生成joda-time对象
public void test1(){
DateTime dt1 = new DateTime();
DateTime dt2 = new DateTime(new Date());
DateTime dt3 = new DateTime(2017,11,27,14,30,50,500);
System.out.println(dt1.toString("yyyy-MM-dd HH:mm:ss"));
System.out.println(dt2.toString("yyyy-MM-dd HH:mm:ss"));
System.out.println(dt3.toString("yyyy-MM-dd HH:mm:ss"));
}
2.时间对象字符窜解析
public void test2(){
DateTimeFormatter formatter = DateTimeFormat.forPattern("yyyy-MM-dd");
DateTime dt = DateTime.parse("2019-04-09", formatter);
System.out.println(dt.toString("yyyy-MM-dd HH:mm:ss"));
}
3.单个时间对象计算
public void test3(){
DateTime dt = new DateTime(2017,11,12,13,14,15);
//对时间对象加1秒,加1天,减2天
DateTime dt2 = dt.plusSeconds(1).plusDays(1).minusDays(2);
System.out.println(dt2.toString("yyyy-MM-dd HH:mm:ss"));
}
4.获取年月日点分秒
public void test4(){
DateTime dt = new DateTime();
//年
int year = dt.getYear();
//月
int month = dt.getMonthOfYear();
//日
int day = dt.getDayOfMonth();
//星期
int week = dt.getDayOfWeek();
//点
int hour = dt.getHourOfDay();
//分
int min = dt.getMinuteOfHour();
//秒
int sec = dt.getSecondOfMinute();
//毫秒
int msec = dt.getMillisOfSecond();
System.out.println("当前时间为:"+year+"-"+month+"-"+day+" "+hour+":"+min+":"+sec+" "+msec);
System.out.println("当前星期为:"+week);
}
5.星期的特殊处理
public void test5(){
DateTime dt = new DateTime();
switch(dt.getDayOfWeek()) {
case DateTimeConstants.SUNDAY:
System.out.println("星期日");
break;
case DateTimeConstants.MONDAY:
System.out.println("星期一");
break;
case DateTimeConstants.TUESDAY:
System.out.println("星期二");
break;
case DateTimeConstants.WEDNESDAY:
System.out.println("星期三");
break;
case DateTimeConstants.THURSDAY:
System.out.println("星期四");
break;
case DateTimeConstants.FRIDAY:
System.out.println("星期五");
break;
case DateTimeConstants.SATURDAY:
System.out.println("星期六");
break;
}
}
6.与JDK日期对象的转换
public void test6(){
DateTime dt = new DateTime();
//将DateTime转成java.util.Date
Date d1 = new Date(dt.getMillis());
Date d2 = dt.toDate();
//将DateTime转成java.util.Calendar
Calendar c1 = Calendar.getInstance();
c1.setTimeInMillis(dt.getMillis());
Calendar c2 = dt.toCalendar(Locale.getDefault());
}
7.取特殊日期
public void test7(){
DateTime dt = new DateTime();
//月初日期
DateTime firstDay = dt.dayOfMonth().withMinimumValue();
//90天后那一周的最后一天
DateTime lastDay = dt.plusDays(30).dayOfWeek().withMaximumValue();
}
8.时区
public void test8(){
//默认设置为日本时间
DateTimeZone.setDefault(DateTimeZone.forID("Asia/Tokyo"));
DateTime dt = new DateTime();
//伦敦时区
new DateTime(DateTimeZone.forID("Europe/London"));
}
9.计算区间
public void test9(){
DateTime begin = new DateTime("2018-08-09");
DateTime end = new DateTime("2019-05-06");
//计算区间毫秒数
Duration duration = new Duration(begin, end);
long time = duration.getMillis();
//计算区间天数
Period period = new Period(begin, end, PeriodType.days());
int days = period.getDays();
//计算特定日期是否在改区间内
Interval interval = new Interval(begin, end);
boolean contains = interval.contains(new DateTime("2018-12-12"));
}
10.日期比较
public void test10(){
DateTime d1 = new DateTime("2019-05-09");
DateTime d2 = new DateTime("2019-05-15");
//和系统时间比
d1.isBeforeNow();
d1.isAfterNow();
d1.isEqualNow();
//和其他时间比
d1.isBefore(d2);
d1.isAfter(d2);
d1.isEqual(d2);
}
11.格式化输出
public void test11(){
DateTime dateTime = new DateTime();
//2019/05/09 10:34:46.957上午
System.out.println(dateTime.toString("yyyy/MM/dd hh:mm:ss.SSSa"));
//2019-05-09 10:34:46
System.out.println(dateTime.toString("yyyy-MM-dd HH:mm:ss"));
//星期四 09 五月, 2019 10:34:46上午
System.out.println(dateTime.toString("EEEE dd MMMM, yyyy HH:mm:ssa"));
//2019/05/09 10:34 Asia/Shanghai
System.out.println(dateTime.toString("yyyy/MM/dd HH:mm ZZZZ"));
//2019/05/09 10:34 +0800
System.out.println(dateTime.toString("yyyy/MM/dd HH:mm Z"));
}
求收藏,求赞,谢谢!