文档章节

joda-time推荐

追忆100
 追忆100
发布于 2017/09/07 09:57
字数 677
阅读 24
收藏 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
40
0
开源时间开发工具Joda-time介绍

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

leqianlong
2013/11/30
0
0
Java 中日期的几种常见操作 —— 取值、转换、加减、比较

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

十一11
2016/02/20
75
0
Joda-time学习笔记

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

刀狂剑痴
2015/08/27
2.5K
0
Joda-Time 2.9.7 发布,Java 日期时间处理库

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

淡漠悠然
2016/12/20
2.1K
5

没有更多内容

加载失败,请刷新页面

加载更多

下一页

49.Nginx防盗链 访问控制 解析php相关 代理服务器

12.13 Nginx防盗链 12.14 Nginx访问控制 12.15 Nginx解析php相关配置(502的问题) 12.16 Nginx代理 扩展 502问题汇总 http://ask.apelearn.com/question/9109 location优先级 http://blog....

王鑫linux
今天
1
0
Nginx防盗链、访问控制、解析php相关配置、Nginx代理

一、Nginx防盗链 1. 编辑虚拟主机配置文件 vim /usr/local/nginx/conf/vhost/test.com.conf 2. 在配置文件中添加如下的内容 { expires 7d; valid_referers none blocked server_names *.tes......

芬野de博客
今天
0
0
spring EL 和资源调用

资源调用 import org.springframework.beans.factory.annotation.Value;import org.springframework.context.annotation.PropertySource;import org.springframework.core.io.Resource;......

Canaan_
今天
1
0
memcached命令行、memcached数据导出和导入

一、memcached命令行 yum装telnet yum install telent 进入memcached telnet 127.0.0.1 11211 命令最后的2表示,两位字节,30表示过期时间(秒) 查看key1 get key1 删除:ctrl+删除键 二、m...

Zhouliang6
今天
1
0
Linux定时备份MySQL数据库

做项目有时候要备份数据库,手动备份太麻烦,所以找了一下定时备份数据库的方法 Linux里有一个 crontab 命令被用来提交和管理用户的需要周期性执行的任务,就像Windows里的定时任务一样,用这...

月夜中徘徊
今天
1
1

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部