文档章节

joda-time推荐

追忆100
 追忆100
发布于 2017/09/07 09:57
字数 677
阅读 22
收藏 0
点赞 0
评论 0

最近接触到joda-time,顿时发现它太好了,完全可以将之前的DateUtil工具类删掉了;

今天只是介绍下joda-time,官网地址:http://www.joda.org/joda-time/;

来个demo,注释的部分是之前DateUtil中对JDK日期的封装,改成joda后,都是一行代码就可以搞定!

package cn.com.mayue.joda;

import org.joda.time.DateTime;

import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * Created by mayue on 2016/12/22.
 */
public class DateUtil {

    public static void main(String[] args) throws Exception{
        //获取当前日期的字符串结果
        System.out.println(DateUtil.getDateStr("yyyy-MM-dd"));
        //获取日期的 当月的最后一天
        System.out.println(DateUtil.getLastDayOfMonth("2016-12-22"));
        //月份 计算
        System.out.println(DateUtil.addMonths("2016-12-22",1));
        //天数 计算
        System.out.println(DateUtil.addDays("2016-12-22",1));
        //秒 计算
        System.out.println(DateUtil.addSecond(60*60));
        //获取 日期的月
        System.out.println(DateUtil.getDateMonth("2016-12-22"));
        //获取当前为星期中的第几天
        System.out.println(DateUtil.getWeekDayOfToday());
    }


    /**
     * 获取日期字符串.
     *
     * @param formatType
     *            日期格式类型,例如:"yyyy-MM-dd" "yyyy-MM-dd HH:mm"
     * @return String 格式转换成功后的字符串
     */
    public static String getDateStr(String formatType) {
        /*Calendar cal = Calendar.getInstance();
        SimpleDateFormat myFmt = new SimpleDateFormat(formatType);
        String timeStr = myFmt.format(cal.getTime()).toString();
        return timeStr;*/

        return DateTime.now().toString(formatType);
    }

    /**
     * 获取某月的最后一天.
     *
     * @param dateStr
     *            the date str
     * @return the last day of month
     */
    public static String getLastDayOfMonth(String dateStr) {
        /*String lastDateStr = "";
        DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
        Date date;
        try {
            date = df.parse(dateStr);
            Calendar ca = Calendar.getInstance();
            ca.setTime(date); // someDate 为你要获取的那个月的时间
            ca.set(Calendar.DAY_OF_MONTH, 1);
            ca.add(Calendar.MONTH, 1);
            ca.add(Calendar.DAY_OF_MONTH, -1);
            Date lastDate = ca.getTime();
            lastDateStr = df.format(lastDate);
        } catch (ParseException e) {
        }
        return lastDateStr;*/

        //只获取day
        /*return new DateTime(dateStr).dayOfMonth().withMaximumValue().getDayOfMonth()+"";*/

        return new DateTime(dateStr).dayOfMonth().withMaximumValue().toString("yyyy-MM-dd");
    }

    /**
     * Adds the months.
     *
     * @param dateStr
     *            the date str
     * @param months
     *            the months
     * @return the string
     */
    public static String addMonths(String dateStr, int months) {
        /*Calendar calendar = java.util.GregorianCalendar.getInstance();
        calendar.set(Integer.parseInt(dateStr.split("-")[0]),
                Integer.parseInt(dateStr.split("-")[1]) - 1,
                Integer.parseInt(dateStr.split("-")[2]));
        SimpleDateFormat myFmt = new SimpleDateFormat("yyyy-MM-dd");
        calendar.add(Calendar.MONTH, months);
        String timeStr = myFmt.format(calendar.getTime()).toString();
        return timeStr;*/

        return DateTime.parse(dateStr).plusMonths(months).toString("yyyy-MM-dd");
    }


    /**
     * Adds the days.
     *
     * @param dateStr
     *            the date str
     * @param day
     *            the day
     * @return the string
     */
    public static String addDays(String dateStr, int day) {

        /*Calendar calendar = java.util.GregorianCalendar.getInstance();
        calendar.set(Integer.parseInt(dateStr.split("-")[0]),
                Integer.parseInt(dateStr.split("-")[1]) - 1,
                Integer.parseInt(dateStr.split("-")[2]));
        SimpleDateFormat myFmt = new SimpleDateFormat("yyyy-MM-dd");
        calendar.add(Calendar.DAY_OF_MONTH, day);
        String timeStr = myFmt.format(calendar.getTime()).toString();
        return timeStr;*/

        return DateTime.parse(dateStr).plusDays(day).toString("yyyy-MM-dd");

    }

    /**
     * 当前时间相对前后几秒
     * @param second 分秒
     * @return 结果日期
     */
    public static String addSecond(int second){
       /* Date now = new Date();
        Date nowTemp = new Date(now.getTime() + (second * 1000));
        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        return dateFormat.format(nowTemp);*/

        return DateTime.now().plusSeconds(second).toString("yyyy-MM-dd HH:mm:ss");
    }
    /**
     * 获取指定日期的月份
     * @param dateStr
     * @return
     * @throws ParseException
     */
    public static int getDateMonth(String dateStr) {
        /*DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
        Date date;
        try {
            date = df.parse(dateStr);
            Calendar cal = Calendar.getInstance();
            cal.setTime(date);
            return cal.get(Calendar.MONTH) + 1;
        } catch (ParseException e) {
        }
        return 0;*/

        return new DateTime(dateStr).getMonthOfYear();
    }


    /**
     * <p>Title: getWeekDayOfToday</p>
     * <p>Description: 获取当天是周几</p>
     *
     * @param
     * @return java.lang.String
     */
    public static String getWeekDayOfToday() {
        /*Calendar now = Calendar.getInstance();
        //一周第一天是否为星期天
        boolean isFirstSunday = (now.getFirstDayOfWeek() == Calendar.SUNDAY);
        //获取周几
        int weekDay = now.get(Calendar.DAY_OF_WEEK);
        //若一周第一天为星期天,则-1
        if (isFirstSunday) {
            weekDay = weekDay - 1;
            if (weekDay == 0) {
                weekDay = 7;
            }
        }
        return String.valueOf(weekDay);*/

        return DateTime.now().getDayOfWeek()+"";
    }
}

ibm developerworks中有详细的中文介绍:

https://www.ibm.com/developerworks/cn/java/j-jodatime.html

© 著作权归作者所有

共有 人打赏支持
追忆100
粉丝 2
博文 9
码字总数 3297
作品 0
杭州
后端工程师
开源工具整理(持续更新)

工具类 CAL10N 国际化工具 参考 http://cal10n.qos.ch/ joda-time Joda 实际上是涵盖众多用于 Java 语言的替代 API 的大型项目,因此从技术上讲,使用 Joda 和 Joda-Time 名称表示相同的意思...

why_Dk37 ⋅ 2016/11/12 ⋅ 0

开源时间开发工具Joda-time介绍

1 Joda-time介绍 Joda-Time提供了一组Java类包用于处理包括ISO8601标准在内的date和time。可以利用它把JDK Date和Calendar类完全替换掉,而且仍然能够提供很好的集成。 Joda-Time主要的特点包...

leqianlong ⋅ 2013/11/30 ⋅ 0

Java 中日期的几种常见操作 —— 取值、转换、加减、比较

java 的开发过程中免不了与 Date 类型纠缠,准备总结一下项目经常使用的日期相关操作,JDK 版本 1.7,如果能够帮助大家节约那么几分钟起身活动一下,去泡杯咖啡,便是极好的,嘿嘿。当然,我...

十一11 ⋅ 2016/02/20 ⋅ 0

Joda-time学习笔记

一、joda的优点展示 joda-time能够便捷地格式化时间输出、设定时间、加减时间、计算时间差值。跟JDK的Date/Calender相比一试便知,每个测试中上半部分是用jdk操作,下半部是用joda-time操作。...

刀狂剑痴 ⋅ 2015/08/27 ⋅ 0

Joda-Time 2.9.7 发布,Java 日期时间处理库

Joda-Time 2.9.7 发布了, Joda-Time 提供了一组 Java 类包用于处理包括 ISO8601 标准在内的 date 和 time。可以利用它把 JDK Date 和 Calendar 类完全替换掉,而且仍然能够提供很好的集成。 ...

淡漠悠然 ⋅ 2016/12/20 ⋅ 5

Joda-Time v2.0 发布,Java的日期时间处理

Joda-Time提供了一组Java类包用于处理包括ISO8601标准在内的date和time。可以利用它把JDK Date和Calendar类完全替换掉,而且仍然能够提供很好的集成。 Joda-Time主要的特点包括: 易于使用:...

红薯 ⋅ 2011/08/02 ⋅ 3

Joda-Time v2.8.2 发布,Java 日期时间处理库

Joda-Time v2.8.2 发布,该版本带来了新的提升,bug 修复等等,主要如下: - DateTimeZone data updated to version 2015f 更多内容请看:change notes 下载地址:v2.8.2 JodaTime 提供了一组...

oschina ⋅ 2015/08/12 ⋅ 3

Joda-Time v2.8 发布,Java 日期时间处理库

Joda-Time v2.8 发布,该版本完全兼容 2.7 版本,主要改进包括: 1. 使用 Unicode 对 properties 文件进行转义 2. 避免 Android jar 包中的 ProGuard 错误 JodaTime 提供了一组Java类包用于处...

oschina ⋅ 2015/05/30 ⋅ 13

Joda-Time 2.9.2 发布,Java 日期时间处理库

Joda-Time 2.9.2 发布,更新如下: Bug fixes in 2.9.2 ------------------ - Fix bug in time-zone binary search [#332] - DateTimeZone data updated to version 2016a (version 2.9 had ......

淡漠悠然 ⋅ 2016/01/29 ⋅ 3

Joda-Time 2.9.4 发布,Java 日期时间处理库

Joda-Time 2.9.4 发布了,更新内容如下: Changes in 2.9.4 ---------------- - DateTimeZone data updated to version 2016d - Loading time-zone provider now occurs in a priveleged bloc......

xusheng1987 ⋅ 2016/06/01 ⋅ 8

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Redis 单线程 为何却需要事务处理并发问题

Redis是单线程处理,也就是命令会顺序执行。那么为什么会存在并发问题呢? 个人理解是,虽然redis是单线程,但是可以同时有多个客户端访问,每个客户端会有 一个线程。客户端访问之间存在竞争...

码代码的小司机 ⋅ 34分钟前 ⋅ 0

到底会改名吗?微软GVFS 改名之争

微软去年透露了 Git Virtual File System(GVFS)项目,GVFS 是 Git 版本控制系统的一个开源插件,允许 Git 处理 TB 规模的代码库,比如 270 GB 的 Windows 代码库。该项目公布之初就引发了争...

linux-tao ⋅ 44分钟前 ⋅ 0

笔试题之Java基础部分【简】【二】

1.静态变量和实例变量的区别 在语法定义上的区别:静态变量前要加static关键字,而实例变量前则不加。在程序运行时的区别:实例变量属于某个对象的属性,必须创建了实例对象,其中的实例变...

anlve ⋅ 今天 ⋅ 0

Lombok简单介绍及使用

官网 通过简单注解来精简代码达到消除冗长代码的目的 优点 提高编程效率 使代码更简洁 消除冗长代码 避免修改字段名字时忘记修改方法名 4.idea中安装lombnok pom.xml引入 <dependency> <grou...

to_ln ⋅ 今天 ⋅ 0

【转】JS浮点数运算Bug的解决办法

37.5*5.5=206.08 (JS算出来是这样的一个结果,我四舍五入取两位小数) 我先怀疑是四舍五入的问题,就直接用JS算了一个结果为:206.08499999999998 怎么会这样,两个只有一位小数的数字相乘,怎...

NickSoki ⋅ 今天 ⋅ 0

table eg

user_id user_name full_name 1 zhangsan 张三 2 lisi 李四 `` ™ [========] 2018-06-18 09:42:06 星期一½ gdsgagagagdsgasgagadsgdasgagsa...

qwfys ⋅ 今天 ⋅ 0

一个有趣的Java问题

先来看看源码: public class TestDemo { public static void main(String[] args) { Integer a = 10; Integer b = 20; swap(a, b); System.out......

linxyz ⋅ 今天 ⋅ 0

十五周二次课

十五周二次课 17.1mysql主从介绍 17.2准备工作 17.3配置主 17.4配置从 17.5测试主从同步 17.1mysql主从介绍 MySQL主从介绍 MySQL主从又叫做Replication、AB复制。简单讲就是A和B两台机器做主...

河图再现 ⋅ 今天 ⋅ 0

docker安装snmp rrdtool环境

以Ubuntu16:04作为基础版本 docker pull ubuntu:16.04 启动一个容器 docker run -d -i -t --name flow_mete ubuntu:16.04 bash 进入容器 docker exec -it flow_mete bash cd ~ 安装基本软件 ......

messud4312 ⋅ 今天 ⋅ 0

OSChina 周一乱弹 —— 快别开心了,你还没有女友呢。

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @莱布妮子 :分享吴彤的单曲《好春光》 《好春光》- 吴彤 手机党少年们想听歌,请使劲儿戳(这里) @clouddyy :小萝莉街上乱跑,误把我认错成...

小小编辑 ⋅ 今天 ⋅ 9

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部