joda-time推荐
joda-time推荐
追忆100 发表于3个月前
joda-time推荐
  • 发表于 3个月前
  • 阅读 11
  • 收藏 0
  • 点赞 0
  • 评论 0

腾讯云 技术升级10大核心产品年终让利>>>   

最近接触到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

标签: Joda-Time
共有 人打赏支持
粉丝 0
博文 9
码字总数 3297
×
追忆100
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: