• 数据库时间createtime字段 数据类型的选取


    之前是一直在用datetime类型(db)精度到yyyy-MM-dd HH:mm:ss 或者 date类型 精度到 yyyy-MM-dd 用了框架自动注入功能,自己也没去深入没去管他的set赋值值等等东西。  等到要查询一些有关于时间线的记录时,也就利用了数据库的时间函数来比较得出数据

    但是这段时间没用框架,原生态的MVC模式,从数据的封装到业务逻辑的实现 方方面面都要考虑,从php里的time字段的设计是long型到sql查询的效率,相对来说都有一定的优势,当然遇到的问题也是基础、简单、多而杂。 

    在处理时间格式时出现了一些小问题。1. yyyy-MM-dd HH:mm:ss精度 可以直接new Date().getTime()---long  2. yyyy-MM-dd 精度 貌似只能利用Calendar日期类来转成long型的

    具体转换方法如下:

    /**
         * 转换日期为compute_time
         * @param start 获取时间范围 0 每日0时0分,1当前时间 ,2每日23时59分
         * @param addDate 以当前日期为基准增减的时间
         * @return
         */
        public static long converDateToDBTime(int start,int addDate)
        {
            Calendar cal=java.util.Calendar.getInstance();
            cal.setTime(new Date());
            cal.add(Calendar.DATE,addDate);
            Date nextDate=cal.getTime();
            int y =nextDate.getYear();
            int m = nextDate.getMonth();
            int n = nextDate.getDate();
            long ret =0;
            switch (start){
               case 0:
                  ret = new Date(y,m,n,0,0).getTime()/1000;
                   break;
               case 1:
                   ret =  nextDate.getTime()/1000;
                   break;
               case 2:
                   ret = new Date(y,m,n,23,59,59).getTime()/1000;
                   break;
            }
            return ret;
        }

    附带DateUtil常用操作:

    package com.nubb.util;
    
    /**
     * Created by IntelliJ IDEA.
     * User: leo
     * Date: 2008-10-25
     * Time: 15:56:43
     * Mascot Leo & featherheanven@gmail.com
     */
    import java.text.ParseException;
    import java.text.SimpleDateFormat;
    import java.util.Date;
    import java.util.TimeZone;
    import java.util.Calendar;
    
    public class DateUtil
    {
        private static final TimeZone timeZone = TimeZone.getTimeZone("GMT+08:00");
    
        private static final String format1 = "yyyy-MM-dd HH:mm:ss";
    
        private static final String format2 = "yyyy-MM-dd";
    
        private static final String format3 = "HH:mm";
    
        private static final String format4 = "MM-dd HH:mm";
    
        private static final String format5 = "M月d日"; 
    
        private static final SimpleDateFormat dateFormat1 = new SimpleDateFormat(format1);
    
        private static final SimpleDateFormat dateFormat2 = new SimpleDateFormat(format2);
    
        private static final SimpleDateFormat dateFormat3 = new SimpleDateFormat(format3);
    
        private static final SimpleDateFormat dateFormat4 = new SimpleDateFormat(format4);
    
         private static final SimpleDateFormat dateFormat5 = new SimpleDateFormat(format5);
        
        public DateUtil()
        {
    
        }
    
        /*
         * 根据所选的时间格式将String类型的时间转换为long类型
         * @param String time, int format
         * @return long
         */
    
        public static long getTimeStamp(String time, int format) throws ParseException
        {
            if (format == 1)
            {
                return dateFormat1.parse(time).getTime();
            }
            else if (format == 2)
            {
                return dateFormat2.parse(time).getTime();
            }
            else
            {
                return dateFormat3.parse(time).getTime();
            }
        }
        public static long getTimeStamp(String time,int format,long defaulttime)
        {
            try{
            return getTimeStamp(time,format);
            }catch(Exception e){
                return defaulttime;
            }
        }
    
        /*
         * 根据所选的时间格式将long类型的时间转换为String类型  数据库的unixtime*1000 = 系统的timestamp
         * @param long time, int format
         * @return String
         */
        public static String getTimeFromDB(long timeStamp, int format) throws ParseException
        {
            return getTime(timeStamp*1000,format);
        }
        public static String getTime(long timeStamp, int format) throws ParseException
        {
            if (format == 1)
            {
                return dateFormat1.format(new Date(timeStamp));
            }
            else if (format == 2)
            {
                return dateFormat2.format(new Date(timeStamp));
            }
            else if(format == 3)
            {
                return dateFormat3.format(new Date(timeStamp));
            }
            else if(format == 4){
                return dateFormat4.format(new Date(timeStamp));
            }
            else if(format == 5){
                return dateFormat5.format(new Date(timeStamp));
            }
            else {
               return dateFormat1.format(new Date(timeStamp));
            }
        }
    
        /**
         * 获取默认时间
         *
         * @return date
         */
        public static Date getDefaultAsDate()
        {
            return new Date(0);
        }
    
        /**
         * J
         * 获取默认时间
         *
         * @return long
         */
        public static long getDefaultAsLong()
        {
            return 0L;
        }
    
        /**
         * J
         * 获取当前时间
         *
         * @return date
         */
        public static Date getNowAsDate()
        {
            return new Date();
        }
    
        /**
         * 获取当前时间
         *
         * @param format 格式
         * @param def    默认
         * @param def    默认
         * @return
         */
        public static String getNowAsString(String format, String def)
        {
            return formatDateAsString(new Date(), format, def);
        }
    
        /**
         * J
         * 获取当前时间
         *
         * @return long
         */
        public static long getNowAsLong()
        {
            return (new Date()).getTime();
        }
    
        /**
         * 将一个字符串的日期描述转换为java.util.Date对象
         *
         * @param strDate 字符串的日期描述
         * @param format  字符串的日期格式,比如:“yyyy-MM-dd HH:mm”
         * @return 字符串转换的日期对象java.util.Date
         */
        public static Date getDateFromString(String strDate, String format)
        {
            if (strDate == null || strDate.trim().equals(""))
            {
                return getDefaultAsDate();
            }
    
            SimpleDateFormat formatter = new SimpleDateFormat(format);
    //        formatter.setTimeZone(timeZone);
    
            Date date;
            try
            {
                date = formatter.parse(strDate);
            }
            catch (ParseException e)
            {
                date = getDefaultAsDate();
            }
    
            return date;
        }
    
        /**
         * J
         * 格式化日期 默认 0000-00-00
         *
         * @param date
         * @param s
         * @return 带默认值的时间格式化字符串
         */
        public static String formatDateAsString(Date date, String s, String def)
        {
            String ret = def;
            if (date != null && !"".equals(s))
            {
                try
                {
                    ret = (new SimpleDateFormat(s)).format(date);
                }
                catch (Exception e)
                {
                    ret = def;
                }
            }
            return ret;
        }
    
        /**
         * V
         * 传入秒数,返回如 XX:XX:XX 的一串文字
         *
         * @param second
         * @return 返回 XX:XX:XX 的文字
         */
        public static String getTimeAsString(int second)
        {
            String ret = "";
            int ss = second;
            int HH = 0;
            int mm = 0;
    
            HH = ss / 60 / 60;
            if (HH > 0)
            {
                ss = ss - (HH * 60 * 60);
                if (HH >= 10)
                    ret = HH + ":";
                else
                    ret = "0" + HH + ":";
            }
            mm = ss / 60;
            if (mm > 0)
            {
                ss = ss - (mm * 60);
                if (mm >= 10)
                    ret += mm + ":";
                else
                    ret += "0" + mm + ":";
            }
            else
            {
                ret += "00" + ":";
            }
            if (ss >= 10)
                ret += ss;
            else
                ret += "0" + ss;
    
            return ret;
        }
    
        /**
         * V
         * 传入一串时间文字如 XX:XX:XX,返回秒数
         *
         * @param time
         * @return 返回秒数
         */
        public static int getStringAsSeord(String time)
        {
            int ret = 0;
            if (time != null && !"".equals(time.trim()))
            {
                try
                {
                    String[] times = time.trim().split(":");
                    if (times.length == 3)
                    {
                        ret = ret + Integer.parseInt(times[0]) * 60 * 60;    //
                        ret = ret + Integer.parseInt(times[1]) * 60;    //
                        ret = ret + Integer.parseInt(times[2]);    //
    
                    }
                    else if (times.length == 2)
                    {
                        ret = ret + Integer.parseInt(times[0]) * 60;    //
                        ret = ret + Integer.parseInt(times[1]);    //
                    }
                    else if (times.length == 1)
                    {
                        ret = ret + Integer.parseInt(times[0]);    //
                    }
                }
                catch (Exception e)
                {
                    ret = 0;
                }
            }
            return ret;
        }
    
        /**
           * 得到几天前的时间
           * @param d
           * @param day
           * @return
           */
          public static Date getDateBefore(Date d,int day){
           java.util.Calendar now = Calendar.getInstance();
           now.setTime(d);
           now.set(Calendar.DATE,now.get(Calendar.DATE)-day);
           return now.getTime();
          }
    
          /**
           * 得到几天后的时间
           * @param d
           * @param day
           * @return
           */
          public static Date getDateAfter(Date d,int day){
           Calendar now =Calendar.getInstance();
           now.setTime(d);
           now.set(Calendar.DATE,now.get(Calendar.DATE)+day);
           return now.getTime();
          }
          
    }
  • 相关阅读:
    mysql数据库 及 常用 SQL语句
    移动前端—图片压缩上传实践
    使用Nodejs 的http-proxy 模块做代理服务器的尝试
    Ajax请求参数为文件类型
    <iframe>框架标签的使用
    vue2 核心概念
    关于Web前端密码加密是否有意义的总结
    原生js 与 jQuery对比
    word文档操作
    js (ECMAScript) 对数据处理的 方法、属性总结
  • 原文地址:https://www.cnblogs.com/xmaomao/p/3375850.html
Copyright © 2020-2023  润新知