java读取mysql中的datetime数据发现多了一个".0"在后面的解决方法

问题:

2020-03-17 11:32:16.0,从数据库中读出的时间后面多一个 .0

问题分析:

由于数据库中设置的数据类型为timestamp,如果设置的是date就不会出现该问题;

解决方法:

使用SimpleDateFormat类进行转换,具体方法如下代码所示:

SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = format.parse(product.getCreateTime);
String string = format.format(date);

至此,已经能够解决上面所遇到的问题,如果考虑到多种数据的format时,可以将以上的主要代码封装成一个工具类方法:

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;
    }
}

 

你可能感兴趣的:(springboot,java)