web项目中关于日期查询的问题

       做javaWEB项目时,对于时间的处理上总会出现一些非常细致的问题,这里总结一下,方便以后查询。

      一、 有时候前端显示页不是日期区间,而是就一个日期,也就是查当天的日期,比方说,就查2019-05-22这一天的数据量,这里转换到后端的意思即为查2019-05-22 00:00:00到2019-05-22 23:59:59这个日期区间的数据记录,这时候就需要转换一下:

package com.Jevin.controller;
 
import org.junit.Test;
import java.util.Calendar;
import java.util.Date;
 
 
public class DateUtil {
 
    /**
     * 获取日期的00:00:00
     * @param startDate
     * @return
     */
    public static Date getStartTime(Date startDate){
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(startDate);
        calendar.set(Calendar.HOUR_OF_DAY,0);
        calendar.set(Calendar.MINUTE,0);
        calendar.set(Calendar.SECOND,0);
        return calendar.getTime();
    }
 
    /**
     * 获取日期的23:59:59
     * @param endDate
     * @return
     */
    public static Date getEndTime(Date endDate){
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(endDate);
        calendar.set(Calendar.HOUR_OF_DAY,23);
        calendar.set(Calendar.MINUTE,59);
        calendar.set(Calendar.SECOND,59);
        return calendar.getTime();
    }
 
    @Test
    public void test(){
        System.out.println(getEndTime(new Date()));
    }
 
}

二、将Date类型的时间转换为任意格式的String类型的时间,或者将String类型的时间格式转换为Date类型:

    /**
     * 将Date类型转换为指定格式的String
     */
    @Test
    public void test13(){
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        Date date = new Date();
        String strDate = sdf.format(date);
        System.out.println(strDate);
    }
    /**
     * 将String类型的时间转换为Date类型
     */
    @Test
    public void test14() throws ParseException {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String strDate = "1949-10-01 12:12:12";
        Date date = sdf.parse(strDate);
        System.out.println(date);
    }

三、获得时间戳,也就是从1970年到现在的时间的毫秒数,反过来由时间戳获取时间。这个前后端分离用的比较多,一般前后端传的时间参数都是时间戳,而不是具体时间,这个时候需要我们将其解析为时间格式:

    /**
     * 将具体时间转换为时间戳
     */
    @Test
    public void test15(){
        Date date = new Date();
        long timeMillis = date.getTime();
        System.out.println(timeMillis);
    }
    /**
     * 将时间戳转换为具体时间
     */
    @Test
    public void test16(){
        String strMillis = "1558503981957";
        long time = Long.valueOf(strMillis);
        Date date = new Date(time);
        System.out.println(date);
    }

三、数据库日期函数TIMESTAMPDIFF()可用来计算两个日期之间的差值:比方说,我需要计算2020-05-12比2019-05-01多了多少天,可以这样:

SELECT    TIMESTAMPDIFF(MONTH,"2019-05-01","2020-05-12");

或者当前时间比指定日期多几天

SELECT    TIMESTAMPDIFF(DAY,"2019-05-01",NOW());

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值