Java日期格式转换

来源:互联网 发布:java单点登录解决方案 编辑:程序博客网 时间:2024/06/07 15:40

现在项目中服务端返回的日期都需要转换成不同的显示风格,这里就写个日期转换工具类。具体代码如下:

import org.apache.commons.lang3.StringUtils;import org.apache.commons.lang3.time.DateUtils;import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Calendar;import java.util.Date;import java.util.Locale;import java.util.TimeZone;public class DateHelper {    /**     * 将时间字符串解析为 Date 类型,支持 ISO6801 格式     *     * @param s 时间字符串     * @return 日期时间,如解析失败则返回 1970-01-01 00:00:00 东八区时间     */    public static Date fromString(String s) {        if (StringUtils.isEmpty(s))            return null;        final String[] patterns = new String[]{                "yyyy-MM-dd'T'HH:mm:ss.SSSZ",                "yyyy-MM-dd'T'HH:mm:ssZ",                "yyyy-MM-dd'T'HH:mm:ss.SSS",                "yyyy-MM-dd'T'HH:mm:ss",        };        try {            // 将 UTC 格式的时间转换为 GMT 时区            s = StringUtils.removeEnd(s, "Z").concat("+00:00");            return DateUtils.parseDate(s, patterns);        } catch (ParseException e) {            // 处理带有微秒和不带微秒的 UTC 格式日期时间            SimpleDateFormat format;            if (s.contains(".")){                 format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS", Locale.getDefault());            }else {                 format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss", Locale.getDefault());            }            format.setTimeZone(TimeZone.getTimeZone("UTC"));            try {                return format.parse(s.replace("(?<=\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}.\\d{3})\\d{4}Z", ""));            } catch (ParseException ex) {                ex.printStackTrace();            }        }        return null;    }    /**     *  默认的日期时间格式     */    public static final String DEFAULT_DATETIME_FORMAT = "yyyy-MM-dd HH:mm";    /**     * 默认的日期格式     */    public static final String DEFAULT_DATE_FORMAT = "yyyy-MM-dd";    /**     * 按照默认格式显示日期     *     * @param date 日期     * @return 日期字符串     */    public static String formatByDefault(Date date) {        if (date == null) return null;        SimpleDateFormat format = new SimpleDateFormat(DEFAULT_DATETIME_FORMAT, Locale.getDefault());        return format.format(date);    }    /**     * 只显示年月日     * @param date 日期     * @return     */    public static String formatByDate(Date date){        if (date == null) return null;        SimpleDateFormat format = new SimpleDateFormat(DEFAULT_DATE_FORMAT, Locale.getDefault());        return format.format(date);    }    /**     * 获取便于阅读的日期文本,根据日期显示「昨天」、「今天」、「明天」和其他日期     *     * @param date 日期对象     * @return 日期文本     */    public static String getHumanDateString(Date date) {        if(date == null) return null;        String result;        Calendar calendar = Calendar.getInstance();        calendar.setTime(date);        Calendar now = Calendar.getInstance();        Calendar yesterday = Calendar.getInstance();        yesterday.add(Calendar.DATE, -1);        Calendar tomorrow = Calendar.getInstance();        tomorrow.add(Calendar.DATE, 1);//        if(DateUtils.truncatedCompareTo(calendar, now, Calendar.DAY_OF_MONTH) == 0) {//            result = "今天";//        } else if(DateUtils.truncatedCompareTo(calendar, yesterday, Calendar.DAY_OF_MONTH) == 0) {//            result = "昨天";//        } else if(DateUtils.truncatedCompareTo(calendar, tomorrow, Calendar.DAY_OF_MONTH) == 0) {//            result = "明天";//        } else {            SimpleDateFormat format = new SimpleDateFormat(DEFAULT_DATE_FORMAT, Locale.getDefault());            result = format.format(date);//        }        return result;    }}

这里需要用lang3这个库,要在build添加该库:

dependencies {    ......    compile 'org.apache.commons:commons-lang3:3.4'
原创粉丝点击