内容简介:直接上代码,以下是结合API和网上一些常用例子整理,可以直接运用在你自己的代码中,做参考:其他就不多举例了,Joda-Time可以大大提高我们的代码效率,并且不容易出错,以上仅供参考。
Joda-Time的关键特性:
- LocalDate:只包含日期
- LocalTime:只包含时间
- Instant:时间轴上的时间点
- DateTime:时区中完整的日期和时间
- DateTimeZone:更精确的时区
- Duration和Period:持续时间
- Interval:两个时间点之间的时间
- 全面并且灵活的时间格式化与转换
举例
直接上代码,以下是结合API和网上一些常用例子整理,可以直接运用在你自己的代码中,做参考:
public class JodaTest { public static void main(String[] args) { //初始化时间 DateTime dateTime=new DateTime(2018, 12, 18, 18, 23,55); // 年,月,日,时,分,秒,毫秒 DateTime dt3 = new DateTime(2018, 12, 18, 18, 23,55, 333);// 2018年12月18日18点23分55秒333毫秒 //下面就是按照一点的格式输出时间 String str2 = dateTime.toString("MM/dd/yyyy hh:mm:ss.SSSa"); String str3 = dateTime.toString("dd-MM-yyyy HH:mm:ss"); String str4 = dateTime.toString("EEEE dd MMMM, yyyy HH:mm:ssa"); String str5 = dateTime.toString("MM/dd/yyyy HH:mm ZZZZ"); String str6 = dateTime.toString("MM/dd/yyyy HH:mm Z"); DateTimeFormatter format = DateTimeFormat .forPattern("yyyy-MM-dd HH:mm:ss"); //时间解析 DateTime dateTime2 = DateTime.parse("2018-12-21 23:22:45", format); //时间格式化,输出==> 2018/12/21 23:22:45 Fri String string_u = dateTime2.toString("yyyy/MM/dd HH:mm:ss EE"); System.out.println(string_u); //格式化带Locale,输出==> 2018年12月21日 23:22:45 星期五 String string_c = dateTime2.toString("yyyy年MM月dd日 HH:mm:ss EE",Locale.CHINESE); System.out.println(string_c); DateTime dt1 = new DateTime();// 取得当前时间 // 根据指定格式,将时间字符串转换成DateTime对象,这里的格式和上面的输出格式是一样的 DateTime dt2 = DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss").parseDateTime("2018-12-26 03:27:39"); //计算两个日期间隔的年数,月数,天数,小时数,分钟数,秒数 Interval interval = new Interval(dt1.getMillis(),dt2.getMillis()); Period period = interval.toPeriod(); System.out.printf("%d years, %d months, %d days, %d hours, %d minutes, %d seconds%n", period.getYears(), period.getMonths(), period.getDays(), period.getHours(), period.getMinutes(), period.getSeconds()); //计算两个日期间隔的天数 LocalDate start=new LocalDate(2017, 12,14); LocalDate end=new LocalDate(2018, 01, 15); int days = Days.daysBetween(start, end).getDays(); //增加日期 DateTime dateTime1 = DateTime.parse("2012-12-03"); dateTime1 = dateTime1.plusDays(30); dateTime1 = dateTime1.plusHours(3); dateTime1 = dateTime1.plusMinutes(3); dateTime1 = dateTime1.plusMonths(2); dateTime1 = dateTime1.plusSeconds(4); dateTime1 = dateTime1.plusWeeks(5); dateTime1 = dateTime1.plusYears(3); // Joda-time 各种操作..... dateTime = dateTime.plusDays(1) // 增加天 .plusYears(1)// 增加年 .plusMonths(1)// 增加月 .plusWeeks(1)// 增加星期 .minusMillis(1)// 减分钟 .minusHours(1)// 减小时 .minusSeconds(1);// 减秒数 //判断是否闰月 DateTime dt4 = new DateTime(); org.joda.time.DateTime.Property month = dt4.monthOfYear(); System.out.println("是否闰月:" + month.isLeap()); //取得 3秒前的时间 DateTime dt5 = dateTime1.secondOfMinute().addToCopy(-3); dateTime1.getSecondOfMinute();// 得到整分钟后,过的秒钟数 dateTime1.getSecondOfDay();// 得到整天后,过的秒钟数 dateTime1.secondOfMinute();// 得到分钟对象,例如做闰年判断等使用 // DateTime与java.util.Date对象,当前系统TimeMillis转换 DateTime dt6 = new DateTime(new Date()); Date date = dateTime1.toDate(); DateTime dt7 = new DateTime(System.currentTimeMillis()); dateTime1.getMillis(); Calendar calendar = Calendar.getInstance(); dateTime = new DateTime(calendar); } }
与JDK的Calendar比较
- 获取18天之后的某天再下个月的当前周的第一天时间
//jdk Calendar current = Calendar.getInstance(); current.add(Calendar.DAY_OF_MONTH, 18); current.add(Calendar.MONTH, 1); ...... DateFormat dateFormat=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Date date = current.getTime(); String dateStr = dateFormat.format(date); System.out.println(dateStr); //joda-time String dateStr = new DateTime().plusDays(18).plusMonths(1) .dayOfWeek().withMinimumValue().toString("yyyy-MM-dd HH:mm:ss"); System.out.println(dateStr);
- 计算两日期相差的天数
//jdk Calendar start = Calendar.getInstance(); start.set(2017, Calendar.DECEMBER, 14); Calendar end = Calendar.getInstance(); end.set(2018, Calendar.DECEMBER, 15); long startTim = start.getTimeInMillis(); long endTim = end.getTimeInMillis(); long diff = endTim-startTim; int days=(int) (diff/1000 / 3600 / 24); //joda-time LocalDate start=new LocalDate(2017, 12,14); LocalDate end=new LocalDate(2018, 12, 15); int days = Days.daysBetween(start, end).getDays();
总结
其他就不多举例了,Joda-Time可以大大提高我们的代码效率,并且不容易出错,以上仅供参考。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- PHP使用日期时间扩展库Carbon人性化显示时间
- Java日期时间使用详解
- 使用Prophet进行时间序列预测
- Python之时间和日期使用小结
- 使用TensorFlow2预测国内疫情结束时间
- 使用ARIMA进行时间序列预测(Python)
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
An Introduction to the Analysis of Algorithms
Robert Sedgewick、Philippe Flajolet / Addison-Wesley Professional / 1995-12-10 / CAD 67.99
This book is a thorough overview of the primary techniques and models used in the mathematical analysis of algorithms. The first half of the book draws upon classical mathematical material from discre......一起来看看 《An Introduction to the Analysis of Algorithms》 这本书的介绍吧!