joda-time使用

joda-time使用

SimpleDateFormat是线程安全的吗?
非常不幸,DateFormat 的所有实现,包括 SimpleDateFormat 都不是线程安全的,因此你不应该在多线程序中使用,除非是在对外线程安全的环境中使用,如 将 SimpleDateFormat 限制在 ThreadLocal 中。如果你不这么做,在解析或者格式化日期的时候,可能会获取到一个不正确的结果。因此,从日期、时间处理的所有实践来说,我强力推荐 joda-time 库。


import com.google.api.SystemParameterOrBuilder;
import org.joda.time.DateTime;
import org.joda.time.DateTimeUtils;
import org.joda.time.Days;
import org.joda.time.LocalDate;
import top.sponger.fabric.sdk.common.Constants;

import java.util.Locale;

/**
 * Joda-Time 使用总结
 * https://segmentfault.com/a/1190000003974016
 */
public class JodaTimeTest {

    public static void main(String[] args) {
        /**
         * 得到当前时间
         * */
        System.out.println();
        DateTime dateTime = new DateTime();
        // datetime默认的输出格式为yyyy-MM-ddTHH:mm:ss.SSS
        System.out.println("得到当前时间: "+dateTime.toString());
        //yyyy-MM-dd HH:mm:ss
        System.out.println("得到当前时间: "+dateTime.toString(Constants.TimeFormat.DATE.getFomat()));
        System.out.println("==========================================");

        /**
         * 指定某个时间
         * */
        System.out.println();
        DateTime dateTime1 = new DateTime(1472457422728L);
        DateTime dateTime2 = new DateTime(2016, 8, 29, 15, 57, 2);
        System.out.println("指定某个时间: "+dateTime1.toString(Constants.TimeFormat.DATE.getFomat()));
        System.out.println("指定某个时间: "+dateTime2.toString(Constants.TimeFormat.DATE.getFomat()));
        System.out.println("==========================================");

        /**
         * 输出locale 输出某年某月某日 某时:某分:某秒 星期几
         * */
        System.out.println();
        System.out.println("输出locale 输出某年某月某日 某时:某分:某秒 星期几: "+new DateTime().toString(Constants.TimeFormat.DATE_WEEK.getFomat(), Locale.CHINESE));
        System.out.println("==========================================");
        /**
         * 输出星期几
         * */
        System.out.println();
        System.out.println("输出星期几: "+new DateTime().toString(Constants.TimeFormat.WEEK_CHAR.getFomat()));
        System.out.println("输出星期几: "+new DateTime().toString(Constants.TimeFormat.WEEK.getFomat(),Locale.CHINESE));
        System.out.println("输出星期几: "+new DateTime().toString(Constants.TimeFormat.WEEK.getFomat(),Locale.ENGLISH));
        System.out.println("==========================================");

        /**
         * 计算两个日期相隔的天数
         * */
        System.out.println();
        LocalDate start = new LocalDate(2019,5,10);
        LocalDate end = new DateTime().toLocalDate();
        // 这里要求start必须早于end,否则计算出来的是个负数
        System.out.println("计算两个日期相隔的天数: "+Days.daysBetween(start ,end).getDays());
        System.out.println("==========================================");

        /**
         * 对日期的加减操作
         * */
        System.out.println();
        DateTime dateTime3 = new DateTime();
        dateTime3 = dateTime3.plusYears(1)            //增加年
                            .plusMonths(1)            //增加月
                            .plusDays(1)              //增加日
                            .minusHours(1)            //减小时
                            .minusMinutes(1)          //减分钟
                            .minusSeconds(1);          //减秒数
        System.out.println("对日期的加减操作: "+dateTime3.toString(Constants.TimeFormat.DATE.getFomat()));
        System.out.println("==========================================");

        /**
         * 判断是否是闰月
         * */
        System.out.println();
        DateTime dateTime4 = new DateTime();
        DateTime.Property month = dateTime4.monthOfYear();
        System.out.println(month.isLeap());
        System.out.println("==========================================");


    }

}

常量类如下代码


/**
 * 常量类
 * */
public class Constants {
    ///
    // 格式化时间   //
    /
    public static enum TimeFormat{
        DATE("yyyy-MM-dd HH:mm:ss"),
        DATE_WEEK("yyyy年MM月dd日 HH:mm:ss EE"),
        WEEK("E"),//星期几
        WEEK_CHAR("e"),//周几 1-7
        ;

        private final String fomat;
        private TimeFormat(String format){
            this.fomat = format;
        }

        public String getFomat() {
            return fomat;
        }
    }


}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值