数据库时间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();
      }
      
}

 

 

转载于:https://www.cnblogs.com/xmaomao/p/3375850.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值