mysql数据库中timestamp类型的日期读取到java后面多了个.0

现象

从数据库读取出来的日期后面多了个.0,如:
2018-11-17 01:02:00.0

原因

因为数据库的字段设置为timestamp类型。(如果设置为Date类型的话,就不会报这种错误了

解决

通过SimpleDateFormat类来进行转换

SimpleDateFormat fmt = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = fmt.parse(user.getTime());//将数据库出的 timestamp 类型的时间转换为java的Date类型  
String s = fmt.format(date);  

到这里我们就已经解决了这个问题。

封装成工具类

实际工作中,建议将这个操作封装成一个工具类,避免重复的书写代码。
下面提供我项目中封装的工具类

/**
* @author hungteshun
* @description:
* @date 2018/11/17 16:36
*/
public class DateUtils {

    public static final String FORMATTER_MINUTE = "yyyy-MM-dd HH:mm";
    public static final String FORMATTER_SECOND = "yyyy-MM-dd HH:mm:ss";
    public static final String FORMATTER_MILLISECOND = "yyyy-MM-dd HH:mm:ss.SSS";

    private static Pattern PATTERN_REGEX_MINUTE = Pattern.compile("^\\d{4}-\\d{2}-\\d{2} \\d{2}:\\d{2}$");
    private static Pattern PATTERN_REGEX_SECOND = Pattern.compile("^\\d{4}-\\d{2}-\\d{2} \\d{2}:\\d{2}:\\d{2}$");
    private static Pattern PATTERN_REGEX_MILLISECOND = Pattern.compile("^\\d{4}-\\d{2}-\\d{2} \\d{2}:\\d{2}\\.\\d{3}$");

    public static Date parse(String dateTimeStr) throws ParseException {
        String formatter = "";
        if (TextValidator.isMatch(PATTERN_REGEX_MINUTE, dateTimeStr)) {
            formatter = FORMATTER_MINUTE;
        } else if (TextValidator.isMatch(PATTERN_REGEX_SECOND, dateTimeStr)) {
            formatter = FORMATTER_SECOND;
        } else if (TextValidator.isMatch(PATTERN_REGEX_MILLISECOND, dateTimeStr)) {
            formatter = FORMATTER_MILLISECOND;
        }
        if (StringUtils.isNotBlank(formatter)) {
            return parse(dateTimeStr, formatter);
        } else {
            return null;
        }
    }

    public static Date parse(String dateTimeStr, String formatter) throws ParseException {
        Date dateTime = null;
        if (StringUtils.isNotBlank(dateTimeStr)) {
            SimpleDateFormat simpleDateFormat = new SimpleDateFormat(formatter);
            dateTime = simpleDateFormat.parse(dateTimeStr);
        }
        return dateTime;
    }

    public static String format(Date date) {
        return format(date, FORMATTER_SECOND);
    }

    public static String format(Date date, String formatter) {
        String result = "";
        if (date != null) {
            SimpleDateFormat simpleDateFormat = new SimpleDateFormat(formatter);
            result = simpleDateFormat.format(date);
        }
        return result;
    }
}
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值