文章23 | 阅读 30919 | 点赞0
把日期按照不同的需求格式化成对应的日期字符串
此博文的依据:hutool-5.6.5版本源码
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-core</artifactId>
<version>5.6.5</version>
</dependency>
方法 | 描述 |
---|---|
cn.hutool.core.date.DateUtil.parseLocalDateTime(java.lang.CharSequence) | 构建LocalDateTime对象 <br> 格式:yyyy-MM-dd HH:mm:ss |
cn.hutool.core.date.DateUtil.parseLocalDateTime(java.lang.CharSequence, java.lang.String) | 构建LocalDateTime对象 |
cn.hutool.core.date.DateUtil.parse(java.lang.CharSequence, java.text.DateFormat) | 构建DateTime对象 |
cn.hutool.core.date.DateUtil.parse(java.lang.CharSequence, cn.hutool.core.date.format.DateParser) | 构建DateTime对象 |
cn.hutool.core.date.DateUtil.parse(java.lang.CharSequence, java.time.format.DateTimeFormatter) | 构建DateTime对象 |
cn.hutool.core.date.DateUtil.parse(java.lang.CharSequence, java.lang.String) | 将特定格式的日期转换为Date对象 |
cn.hutool.core.date.DateUtil.parse(java.lang.CharSequence, java.lang.String, java.util.Locale) | 将特定格式的日期转换为Date对象 |
cn.hutool.core.date.DateUtil.parse(java.lang.String, java.lang.String[]) | 通过给定的日期格式解析日期时间字符串。 <br> 传入的日期格式会逐个尝试,直到解析成功, <br>返回{@link DateTime}对象,否则抛出{@link DateException}异常。 |
cn.hutool.core.date.DateUtil.parseDateTime(java.lang.CharSequence) | 解析日期时间字符串,格式支持: |
yyyy-MM-dd HH:mm:ss
yyyy/MM/dd HH:mm:ss
yyyy.MM.dd HH:mm:ss
yyyy年MM月dd日 HH:mm:ss
|
| cn.hutool.core.date.DateUtil.parseDate(java.lang.CharSequence) | 解析日期字符串,忽略时分秒,支持的格式包括:
yyyy-MM-dd yyyy/MM/dd yyyy.MM.dd yyyy年MM月dd日
|
| cn.hutool.core.date.DateUtil.parseTime(java.lang.CharSequence) | 解析时间,格式HH:mm:ss,日期部分默认为1970-01-01 |
| cn.hutool.core.date.DateUtil.parseTimeToday(java.lang.CharSequence) | 解析时间,格式HH:mm 或 HH:mm:ss,日期默认为今天 |
| cn.hutool.core.date.DateUtil.parseUTC(java.lang.String) | 解析UTC时间,格式: <br><br><br>1. yyyy-MM-dd’T’HH:mm:ss’Z’<br>1. yyyy-MM-dd’T’HH:mm:ss.SSS’Z’<br>1. yyyy-MM-dd’T’HH:mm:ssZ<br>1. yyyy-MM-dd’T’HH:mm:ss.SSSZ |
| cn.hutool.core.date.DateUtil.parseCST(java.lang.CharSequence) | 解析CST时间,格式: <br><br><br>1. EEE MMM dd HH:mm:ss z yyyy<br> (例如:Wed Aug 01 00:00:00 CST 2012) |
| cn.hutool.core.date.DateUtil.parse(java.lang.CharSequence) | 将日期字符串转换为{@link DateTime}对象,格式: <br><br><br>1. yyyy-MM-dd HH:mm:ss<br>1. yyyy/MM/dd HH:mm:ss<br>1. yyyy.MM.dd HH:mm:ss<br>1. yyyy年MM月dd日 HH时mm分ss秒<br>1. yyyy-MM-dd<br>1. yyyy/MM/dd<br>1. yyyy.MM.dd<br>1. HH:mm:ss<br>1. HH时mm分ss秒<br>1. yyyy-MM-dd HH:mm<br>1. yyyy-MM-dd HH:mm:ss.SSS<br>1. yyyyMMddHHmmss<br>1. yyyyMMddHHmmssSSS<br>1. yyyyMMdd<br>1. EEE, dd MMM yyyy HH:mm:ss z<br>1. EEE MMM dd HH:mm:ss zzz yyyy<br>1. yyyy-MM-dd’T’HH:mm:ss’Z’<br>1. yyyy-MM-dd’T’HH:mm:ss.SSS’Z’<br>1. yyyy-MM-dd’T’HH:mm:ssZ<br>1. yyyy-MM-dd’T’HH:mm:ss.SSSZ |
构建LocalDateTime对象
格式:yyyy-MM-dd HH:mm:ss
参数名 | 描述 |
---|---|
CharSequence dateStr | dateStr 时间字符串(带格式) |
LocalDateTime对象
// 测试字符串与LocalDateTime的互相转换
String strDate = "2019-12-01 17:02:30";
LocalDateTime ldt = DateUtil.parseLocalDateTime(strDate);
String strDate1 = DateUtil.formatLocalDateTime(ldt);
Assert.assertEquals(strDate, strDate1);
String strDate2 = "2019-12-01 17:02:30.111";
ldt = DateUtil.parseLocalDateTime(strDate2, DatePattern.NORM_DATETIME_MS_PATTERN);
strDate1 = DateUtil.format(ldt, DatePattern.NORM_DATETIME_PATTERN);
Assert.assertEquals(strDate, strDate1);
链接:待补充
构建LocalDateTime对象
参数名 | 描述 |
---|---|
CharSequence dateStr | dateStr 时间字符串(带格式) |
String format | format 使用{@link DatePattern}定义的格式 |
LocalDateTime对象
// 测试字符串与LocalDateTime的互相转换
String strDate = "2019-12-01 17:02:30";
LocalDateTime ldt = DateUtil.parseLocalDateTime(strDate);
String strDate1 = DateUtil.formatLocalDateTime(ldt);
Assert.assertEquals(strDate, strDate1);
String strDate2 = "2019-12-01 17:02:30.111";
ldt = DateUtil.parseLocalDateTime(strDate2, DatePattern.NORM_DATETIME_MS_PATTERN);
strDate1 = DateUtil.format(ldt, DatePattern.NORM_DATETIME_PATTERN);
Assert.assertEquals(strDate, strDate1);
链接:待补充
构建DateTime对象
参数名 | 描述 |
---|---|
CharSequence dateStr | dateStr Date字符串 |
DateFormat dateFormat | dateFormat 格式化器 {@link SimpleDateFormat} |
DateTime对象
String str = "31-Aug-2020";
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("dd-MMM-yyyy", Locale.US);
//temporalAccessor {@link TemporalAccessor},常用子类: {@link LocalDateTime}、 LocalDate
LocalDateTime localDateTime = LocalDate.parse(str, dtf).atStartOfDay();
Date date1 = DateUtil.date(localDateTime);
System.out.println(date1);
Assert.assertNotNull(date1);
链接:待补充
构建DateTime对象
参数名 | 描述 |
---|---|
CharSequence dateStr | dateStr Date字符串 |
DateParser parser | parser 格式化器,{@link FastDateFormat} |
DateTime对象
String dateStr = "Wed Sep 16 11:26:23 CST 2009";
SimpleDateFormat sdf = new SimpleDateFormat(DatePattern.JDK_DATETIME_PATTERN, Locale.US);
sdf.setTimeZone(TimeZone.getTimeZone("America/Chicago"));
final DateTime parse = DateUtil.parse(dateStr, sdf);
FastDateFormat fdf = FastDateFormat.getInstance(DatePattern.JDK_DATETIME_PATTERN, TimeZone.getTimeZone("America/Chicago"), Locale.US);
final DateTime parse2 = DateUtil.parse(dateStr, fdf);
Assert.assertEquals(parse, parse2);
链接:待补充
构建DateTime对象
5.0.0
参数名 | 描述 |
---|---|
CharSequence dateStr | dateStr Date字符串 |
DateTimeFormatter formatter | formatter 格式化器,{@link DateTimeFormatter} |
DateTime对象
String str = "31-Aug-2020";
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("dd-MMM-yyyy", Locale.US);
//temporalAccessor {@link TemporalAccessor},常用子类: {@link LocalDateTime}、 LocalDate
LocalDateTime localDateTime = LocalDate.parse(str, dtf).atStartOfDay();
Date date1 = DateUtil.date(localDateTime);
System.out.println(date1);
Assert.assertNotNull(date1);
链接:待补充
将特定格式的日期转换为Date对象
参数名 | 描述 |
---|---|
CharSequence dateStr | dateStr 特定格式的日期 |
String format | format 格式,例如yyyy-MM-dd |
日期对象
String ymd = DateUtil.parse("2019-3-21 12:20:15", "yyyy-MM-dd").toString(DatePattern.PURE_DATE_PATTERN);
Assert.assertEquals("20190321", ymd);
链接:待补充
将特定格式的日期转换为Date对象
4.5.18
参数名 | 描述 |
---|---|
CharSequence dateStr | dateStr 特定格式的日期 |
String format | format 格式,例如yyyy-MM-dd |
Locale locale | locale 区域信息 |
日期对象
String ymd = DateUtil.parse("2021-05-16 21:20:15", "yyyy-MM-dd",Locale.US).toString(DatePattern.PURE_DATE_PATTERN);
Assert.assertEquals("20210516", ymd);
链接:待补充
通过给定的日期格式解析日期时间字符串。
传入的日期格式会逐个尝试,直到解析成功,返回{@link DateTime}对象,否则抛出{@link DateException}异常。
5.3.11
参数名 | 描述 |
---|---|
String str | str 日期时间字符串,非空 |
java.lang.String[] parsePatterns | parsePatterns 需要尝试的日期时间格式数组,非空, 见SimpleDateFormat |
解析后的Date
String ymd = DateUtil.parse("2021-05-16 21:20:15", "yyyy/MM/dd HH:mm:ss","yyyy.MM.dd HH:mm:ss","yyyy-MM-dd HH:mm:ss").toString(DatePattern.PURE_DATE_PATTERN);
Assert.assertEquals("20210516", ymd);
链接:待补充
解析日期时间字符串,格式支持:
yyyy-MM-dd HH:mm:ss
yyyy/MM/dd HH:mm:ss
yyyy.MM.dd HH:mm:ss
yyyy年MM月dd日 HH:mm:ss
参数名 | 描述 |
---|---|
CharSequence dateString | dateString 标准形式的时间字符串 |
日期对象
DateTime dateTime =DateUtil.parseDateTime("2021-05-16 21:20:15");
Assert.assertEquals("2021-05-16 21:20:15", dateTime.toString("yyyy-MM-dd HH:mm:ss"));
链接:待补充
解析日期字符串,忽略时分秒,支持的格式包括:
yyyy-MM-dd
yyyy/MM/dd
yyyy.MM.dd
yyyy年MM月dd日
参数名 | 描述 |
---|---|
CharSequence dateString | dateString 标准形式的日期字符串 |
日期对象
String beginStr = "2020-03-11";
DateTime date = DateUtil.parseDate(beginStr);
Calendar calendar = date.toCalendar();
final Calendar begin = DateUtil.beginOfWeek(calendar, false);
Assert.assertEquals("2020-03-08 00:00:00", DateUtil.date(begin).toString());
链接:待补充
解析时间,格式HH:mm:ss,日期部分默认为1970-01-01
参数名 | 描述 |
---|---|
CharSequence timeString | timeString 标准形式的日期字符串 |
日期对象
String beginStr = "22:10:00";
DateTime date = DateUtil.parseTime(beginStr);
System.out.println(date);
Assert.assertEquals("1970-01-01 22:10:00", date.toString());
链接:待补充
解析时间,格式HH:mm 或 HH:mm:ss,日期默认为今天
3.1.1
参数名 | 描述 |
---|---|
CharSequence timeString | timeString 标准形式的日期字符串 |
日期对象
String beginStr = "22:10:00";
DateTime date = DateUtil.parseTimeToday(beginStr);
System.out.println(date);
String str = "2021-05-16 22:10:00";
Date today = DateUtil.parse(str);
Assert.assertEquals(DateUtil.format(today,"yyyy-MM-dd HH:mm:ss"), date.toString());
链接:待补充
解析UTC时间,格式:
4.1.14
参数名 | 描述 |
---|---|
String utcString | utcString UTC时间 |
日期对象
String dateStr1 = "2018-09-13T05:34:31Z";
DateTime dt = DateUtil.parseUTC(dateStr1);
// parse方法支持UTC格式测试
DateTime dt2 = DateUtil.parse(dateStr1);
Assert.assertEquals(dt, dt2);
// 默认使用Pattern对应的时区,即UTC时区
String dateStr = dt.toString();
Assert.assertEquals("2018-09-13 05:34:31", dateStr);
// 使用当前(上海)时区
dateStr = dt.toString(TimeZone.getTimeZone("GMT+8:00"));
Assert.assertEquals("2018-09-13 13:34:31", dateStr);
dateStr1 = "2018-09-13T13:34:32+0800";
dt = DateUtil.parseUTC(dateStr1);
dateStr = dt.toString(TimeZone.getTimeZone("GMT+8:00"));
Assert.assertEquals("2018-09-13 13:34:32", dateStr);
dateStr1 = "2018-09-13T13:34:33+08:00";
dt = DateUtil.parseUTC(dateStr1);
dateStr = dt.toString(TimeZone.getTimeZone("GMT+8:00"));
Assert.assertEquals("2018-09-13 13:34:33", dateStr);
dateStr1 = "2018-09-13T13:34:34+0800";
dt = DateUtil.parse(dateStr1);
assert dt != null;
dateStr = dt.toString(TimeZone.getTimeZone("GMT+8:00"));
Assert.assertEquals("2018-09-13 13:34:34", dateStr);
dateStr1 = "2018-09-13T13:34:35+08:00";
dt = DateUtil.parse(dateStr1);
assert dt != null;
dateStr = dt.toString(TimeZone.getTimeZone("GMT+8:00"));
Assert.assertEquals("2018-09-13 13:34:35", dateStr);
dateStr1 = "2018-09-13T13:34:36.999+0800";
dt = DateUtil.parseUTC(dateStr1);
final SimpleDateFormat simpleDateFormat = new SimpleDateFormat(DatePattern.NORM_DATETIME_MS_PATTERN);
simpleDateFormat.setTimeZone(TimeZone.getTimeZone("GMT+8:00"));
dateStr = dt.toString(simpleDateFormat);
Assert.assertEquals("2018-09-13 13:34:36.999", dateStr);
dateStr1 = "2018-09-13T13:34:37.999+08:00";
dt = DateUtil.parseUTC(dateStr1);
dateStr = dt.toString(simpleDateFormat);
Assert.assertEquals("2018-09-13 13:34:37.999", dateStr);
dateStr1 = "2018-09-13T13:34:38.999+0800";
dt = DateUtil.parse(dateStr1);
assert dt != null;
dateStr = dt.toString(simpleDateFormat);
Assert.assertEquals("2018-09-13 13:34:38.999", dateStr);
dateStr1 = "2018-09-13T13:34:39.999+08:00";
dt = DateUtil.parse(dateStr1);
assert dt != null;
dateStr = dt.toString(simpleDateFormat);
Assert.assertEquals("2018-09-13 13:34:39.999", dateStr);
// 使用UTC时区
dateStr1 = "2018-09-13T13:34:39.99";
dt = DateUtil.parse(dateStr1);
assert dt != null;
dateStr = dt.toString();
Assert.assertEquals("2018-09-13 13:34:39", dateStr);
链接:待补充
解析CST时间,格式:
4.6.9
参数名 | 描述 |
---|---|
CharSequence cstString | cstString UTC时间 |
日期对象
String dateStr = "Wed Sep 16 11:26:23 CST 2009";
SimpleDateFormat sdf = new SimpleDateFormat(DatePattern.JDK_DATETIME_PATTERN, Locale.US);
final DateTime parse = DateUtil.parse(dateStr, sdf);
DateTime dateTime = DateUtil.parseCST(dateStr);
Assert.assertEquals(parse, dateTime);
dateTime = DateUtil.parse(dateStr);
Assert.assertEquals(parse, dateTime);
链接:待补充
将日期字符串转换为{@link DateTime}对象,格式:
参数名 | 描述 |
---|---|
CharSequence dateCharSequence | dateCharSequence 日期字符串 |
日期
String str ="2021-05-16 22:25:00";
System.out.println(DateUtil.parse(str));
str ="2021年05月16日 22时25分00秒";
System.out.println(DateUtil.parse(str));
链接:待补充
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://xiaoxuzhu.blog.csdn.net/article/details/117305724
内容来源于网络,如有侵权,请联系作者删除!