数据库时间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.Instance();
cal.setTime(new Date());
cal.add(Calendar.DATE,addDate);
Date Time();
int y =Year();
int m = Month();
int n = Date();
long ret =0;
switch (start){
case 0:
ret = new Date(y,m,n,0,0).getTime()/1000;
break;
case 1:
ret = Time()/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
*/
ParseException;
SimpleDateFormat;
import java.util.Date;
import java.util.TimeZone;
import java.util.Calendar;
public class DateUtil
{
private static final TimeZone timeZone = TimeZone("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时间日期格式转换
}
/**
* 将⼀个字符串的⽇期描述转换为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 || im().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 && !"".im()))
{
try
{
String[] times = im().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 = Instance();
now.setTime(d);
now.set(Calendar.(Calendar.DATE)-day);
Time();
}
/**
* 得到⼏天后的时间
* @param d
* @param day
* @return
*/
public static Date getDateAfter(Date d,int day){
Calendar now =Instance();
now.setTime(d);
now.set(Calendar.(Calendar.DATE)+day);
Time();
}
}
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论