zoukankan      html  css  js  c++  java
  • joda-time的简单使用及mysql时间函数的使用(今天,本周,本月)

    近期在做一些首页的统计数据复习了下mysql的时间函数,以及后续修改成 传入时间查询时使用的joda-time

    软件简介

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

    Joda-Time主要的特点包括:

    1. 易于使用:Calendar让获取"正常的"的日期变得很困难,使它没办法提供简单的方法,而Joda-Time能够 直接进行访问域并且索引值1就是代表January。
    2. 易于扩展:JDK支持多日历系统是通过Calendar的子类来实现,这样就显示的非常笨重而且事实 上要实现其它日历系统是很困难的。Joda-Time支持多日历系统是通过基于Chronology类的插件体系来实现。
    3. 提供一组完整的功能:它打算提供 所有关系到date-time计算的功能.Joda-Time当前支持6种日历系统,而且在将来还会继续添加。有着比JDK Calendar更好的整体性能等等。

    https://www.joda.org/joda-time/
     
    1.java工具类实现规定时间
     
         <dependency>
                <groupId>joda-time</groupId>
                <artifactId>joda-time</artifactId>
                <version>2.9.4</version>
            </dependency>
    咱也只是使用不敢多说啥
    直接上工具类(今天,本周,本月,前几月起始时间)
    public class JodaTimeUtils {
    
        public static String getThisWeekEndTime() {
            DateTime now = DateTime.now();
            now = now.withDayOfWeek(7)
                    .withHourOfDay(23)
                    .withMinuteOfHour(59)
                    .withSecondOfMinute(59);
    
            //本周日
            return DateFormatUtils.format(now.toDate(),  "yyyy-MM-dd HH:mm:ss");
        }
    
        public static String getThisWeekStartTime() {
            DateTime now = DateTime.now();
            now = now.withDayOfWeek(1)
                    .withHourOfDay(0)
                    .withMinuteOfHour(0)
                    .withSecondOfMinute(0);
            //本周1
            return DateFormatUtils.format(now.toDate(),  "yyyy-MM-dd HH:mm:ss");
        }
    
        public static String getThisDayStartTime() {
            DateTime now = DateTime.now();
            now = now.millisOfDay()
                    .withMinimumValue();
            //今天
            return DateFormatUtils.format(now.toDate(),  "yyyy-MM-dd HH:mm:ss");
        }
    
        public static String getThisDayEndTime() {
            DateTime now = DateTime.now();
            now = now.millisOfDay()
                    .withMaximumValue();
            //今天
            return DateFormatUtils.format(now.toDate(),  "yyyy-MM-dd HH:mm:ss");
        }
    
        public static String getThisMonthStartTime() {
            DateTime now = DateTime.now();
            now = now.dayOfMonth().withMinimumValue()
                    .withHourOfDay(0)
                    .withMinuteOfHour(0)
                    .withSecondOfMinute(0);
    
            //本月初
            return DateFormatUtils.format(now.toDate(),  "yyyy-MM-dd HH:mm:ss");
        }
    
        public static String getThisMonthEndTime() {
            DateTime now = DateTime.now();
            now = now.dayOfMonth().withMaximumValue()
                    .withHourOfDay(23)
                    .withMinuteOfHour(59)
                    .withSecondOfMinute(59);
            //本月末
            return DateFormatUtils.format(now.toDate(),  "yyyy-MM-dd HH:mm:ss");
        }
    
        // i 0 本月1上一个月 类推
        public static String getMonthStartTime(int i) {
            DateTime now = DateTime.now();
            now = now.minusMonths(i).dayOfMonth().withMinimumValue()
                    .withHourOfDay(0)
                    .withMinuteOfHour(0)
                    .withSecondOfMinute(0);
    
            //本月初
            return DateFormatUtils.format(now.toDate(),  "yyyy-MM-dd HH:mm:ss");
        }
    
        public static String getMonthEndTime(int i) {
            DateTime now = DateTime.now();
            now = now.minusMonths(i).dayOfMonth().withMaximumValue()
                    .withHourOfDay(23)
                    .withMinuteOfHour(59)
                    .withSecondOfMinute(59);
            //本月末
            return DateFormatUtils.format(now.toDate(),  "yyyy-MM-dd HH:mm:ss");
        }
    }
     
    2.mysql 函数实现
     
    2.1 今日
    TO_DAYS(create_time) = TO_DAYS(NOW())

    2.2 本周

    这里有个1是因为与国外周的起始不一样我国是周一国外是周天 所以多1

    YEARWEEK(date_format(create_time,'%Y-%m-%d'), 1) = YEARWEEK(now(), 1)

    2.3 本月

    DATE_FORMAT( create_time, '%Y%m' ) = DATE_FORMAT( CURDATE( ) , '%Y%m' )

    2.4近几月

    i 最小为0 指本月 1的话就上个月类推 如果你想搞个下个月 -1 也是支持的

    date_format(create_time, '%Y %m') = date_format(DATE_SUB(curdate(), INTERVAL "+ i +" MONTH),'%Y %m')

    分享到此

    如有问题麻烦大佬告知

    感谢 !!!

    2021-04-20 16:09:34

  • 相关阅读:
    请输出in.txt文件中的2 4 6 8 9 10 12行
    shell 求总分
    快速排序小结
    串的模式匹配和KMP算法
    重定向和转发的区别
    servlet中文乱码问题
    JAXP简介
    DOM常用方法总结
    初探javascript
    现在网站主流排版方式
  • 原文地址:https://www.cnblogs.com/-ccj/p/14681522.html
Copyright © 2011-2022 走看看