Java日期处理组件joda-time
2019-08-16 11:13:04来源:博客园 阅读 ()
版权声明:本文为xing_star原创文章,转载请注明出处!
本文同步自http://javaexception.com/archives/175
Java日期处理组件joda-time
平常在开发过程中,处理日期时间,基本上会使用SimpleDateFormat来处理,用这个也还行,不过有时候想找个强力点的工具类,关于时间日期处理的,我期望的是,对于给定的时间戳或者是一串字符串的时间格式,能够有强大的Api,可以方便的帮我解析出年月日,时分秒,此外也可以知道这个时间戳对应的是这一年的第多少天,这个月的多少天等等。经过一番调研,发现Java的第三方框架中,有一个joda-time,这个日期处理组件对时间日期解析做了增强,功能真的很强大,这里推荐给大家使用。
从16年到现在,这个组件我在很多个项目中使用。接下来用一个常见的需求场景,展示joda-time的部分用法。
如下图所示,我想要实现图中的时间展示效果,下午6:47,晚上9:09,上午11:48等
完整的代码如下:
public static String getTimeString2(String time) { long timeMills = Long.parseLong(time); DateTime dateTime = new DateTime(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();//获取当天是这一年的第几天
接着再看另外一个图片的效果,这个图片展示的效果,我期望的是显示具体的年月日,还有昨天,以及如果是当天的话,展示当天的上午中午下午具体时间。
完整的代码如下:
public static String getTimeString(String time) { long timeMills = Long.parseLong(time); DateTime dateTime = new DateTime(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) { return getTimeString2(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项目地址
https://github.com/JodaOrg/joda-time
原文链接:https://www.cnblogs.com/xing-star/p/11248979.html
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- 国外程序员整理的Java资源大全(全部是干货) 2020-06-12
- 2020年深圳中国平安各部门Java中级面试真题合集(附答案) 2020-06-11
- 2020年java就业前景 2020-06-11
- 04.Java基础语法 2020-06-11
- Java--反射(框架设计的灵魂)案例 2020-06-11
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash