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'}
阅读全文
0 0
- java日期格式转换
- java日期格式转换
- JAVA 日期格式转换
- java日期格式转换
- java日期格式转换
- Java日期格式转换
- java日期格式转换
- Java日期格式转换
- Java日期格式转换
- java日期格式转换
- Java日期格式转换
- Java日期格式转换
- Java日期格式转换
- java日期格式转换
- java转换长日期格式
- Java时间日期格式转换
- java 日期格式转换DateFormat
- java日期格式转换测试
- 1.4 数据处理与可视化
- 欢迎使用CSDN-markdown编辑器
- Linux定时任务Crontab命令详解
- nodejs学习过程
- Android复制粘贴详解
- Java日期格式转换
- springmvc与dubbo和zookeeper的配置关系
- 一个简单的复制文件的方法
- docker学习笔记之数据管理
- 勒索病毒WannaCry肆意攻击教育系统,几维安全再次对教育类APP进行全方位的安全评估! [APP安全报告第26期]
- Apache Beam是什么?
- 05 ffmpeg桌面图像h264编码并封装avi
- 数字货币开发专题(创世区块里藏着什么秘密)
- java常用集合效率测试