java 时间组件_Java日期处理组件joda-time

版权声明:本文为xing_star原创文章,转载请注明出处!

Java日期处理组件joda-time

平常在开发过程中,处理日期时间,基本上会使用SimpleDateFormat来处理,用这个也还行,不过有时候想找个强力点的工具类,关于时间日期处理的,我期望的是,对于给定的时间戳或者是一串字符串的时间格式,能够有强大的Api,可以方便的帮我解析出年月日,时分秒,此外也可以知道这个时间戳对应的是这一年的第多少天,这个月的多少天等等。经过一番调研,发现Java的第三方框架中,有一个joda-time,这个日期处理组件对时间日期解析做了增强,功能真的很强大,这里推荐给大家使用。

从16年到现在,这个组件我在很多个项目中使用。接下来用一个常见的需求场景,展示joda-time的部分用法。

如下图所示,我想要实现图中的时间展示效果,下午6:47,晚上9:09,上午11:48等

91bd5159bc705705010fa9ebb16d7c07.png

完整的代码如下:

public staticString getTimeString2(String time) {long timeMills =Long.parseLong(time);

DateTime dateTime= newDateTime(timeMills);int hourOfDay =dateTime.getHourOfDay();int hourOfDayOf12 =hourOfDay;int minute =dateTime.getMinuteOfHour();

String extra= "";if (hourOfDay == 0) {

extra= "凌晨";

hourOfDayOf12= 12;

}else if (hourOfDay > 0 && hourOfDay < 12) {

extra= "上午";

}else if (hourOfDay >=12 && hourOfDay < 13) {

extra= "中午";

}else if (hourOfDay > 13 && hourOfDay <= 18) {

extra= "下午";

hourOfDayOf12= hourOfDay - 12;

}else if (hourOfDay > 18 && hourOfDay <= 23) {

extra= "晚上";

hourOfDayOf12= hourOfDay - 12;

}

String prefixMinute= "";if (minute < 10) {

prefixMinute= "0";

}return extra + hourOfDayOf12 + ":" + prefixMinute +minute;

}

joda-time中,常用的Api是DateTime,一般情况下,我们可以将long类型的时间戳传入DateTime的构造方法,之后就可以通过DateTiem的对象获取到各种关于日期时间的值

dateTime.getHourOfDay();//当天几点

dateTime.getMinuteOfHour();//这个小时内的分钟数

dateTime.getYear();//哪一年

dateTime.getMonthOfYear();//月份

dateTime.getDayOfMonth();//这个月的几号

dateTime.getDayOfYear();//这一年的第几天

DateTime.now().getDayOfYear();//获取当天是这一年的第几天

接着再看另外一个图片的效果,这个图片展示的效果,我期望的是显示具体的年月日,还有昨天,以及如果是当天的话,展示当天的上午中午下午具体时间。

21bc0d9035955530ea0c91fb81571c16.png

完整的代码如下:

public staticString getTimeString(String time) {long timeMills =Long.parseLong(time);

DateTime dateTime= newDateTime(timeMills);int year =dateTime.getYear();int month =dateTime.getMonthOfYear();int dayOfMonth =dateTime.getDayOfMonth();int dayOfYear =dateTime.getDayOfYear();int nowDayOfYear =DateTime.now().getDayOfYear();if (dayOfYear <=nowDayOfYear) {if (dayOfYear ==nowDayOfYear) {returngetTimeString2(time);

}else if (nowDayOfYear - dayOfYear == 1) {return "昨天";

}else{return year + "/" + month + "/" +dayOfMonth;

}

}return year + "/" + month + "/" +dayOfMonth;

}

这里面关于判断是否是今天的判断用的就是

dateTime.getDayOfYear()

if(dateTime.getDayOfYear() == DateTime.now().getDayOfYear());//表示就是今天

对于joda-time,还有很多其他的Api没有介绍,这个就等有需求场景的时候在去研究吧,joda-time对于字符串的时间解析也很强力。这个可以大家去研究。

Github项目地址

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值