mirror of
https://gitee.com/chinabugotech/hutool.git
synced 2025-05-09 23:51:34 +08:00
add DatePattern
This commit is contained in:
parent
5c93ca2cf4
commit
4b5d556f32
@ -16,7 +16,7 @@
|
||||
|
||||
package org.dromara.hutool.core.data;
|
||||
|
||||
import org.dromara.hutool.core.date.DatePattern;
|
||||
import org.dromara.hutool.core.date.DateFormatPool;
|
||||
import org.dromara.hutool.core.date.DateTime;
|
||||
import org.dromara.hutool.core.date.DateUtil;
|
||||
import org.dromara.hutool.core.lang.Assert;
|
||||
@ -188,7 +188,7 @@ public class CIN {
|
||||
*/
|
||||
public DateTime getBirthDate() {
|
||||
final String birth = getBirth();
|
||||
return DateUtil.parse(birth, DatePattern.PURE_DATE_FORMAT);
|
||||
return DateUtil.parse(birth, DateFormatPool.PURE_DATE_FORMAT);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -81,7 +81,7 @@ import java.util.TimeZone;
|
||||
*
|
||||
* @author Looly
|
||||
*/
|
||||
public class DatePattern {
|
||||
public class DateFormatPool {
|
||||
|
||||
// region Normal
|
||||
//================================================== Normal ==================================================
|
||||
@ -275,7 +275,7 @@ public class DatePattern {
|
||||
* jdk8 bug at: https://bugs.openjdk.java.net/browse/JDK-8031085
|
||||
*/
|
||||
public static final DateTimeFormatter PURE_DATETIME_MS_FORMATTER = new DateTimeFormatterBuilder()
|
||||
.appendPattern(DatePattern.PURE_DATETIME_PATTERN)
|
||||
.appendPattern(DateFormatPool.PURE_DATETIME_PATTERN)
|
||||
.appendValue(ChronoField.MILLI_OF_SECOND, 3)
|
||||
.toFormatter();
|
||||
// endregion
|
@ -127,7 +127,7 @@ public class DateTime extends Date {
|
||||
* @param dateStr Date字符串
|
||||
* @param format 格式
|
||||
* @return this
|
||||
* @see DatePattern
|
||||
* @see DateFormatPool
|
||||
*/
|
||||
public static DateTime of(final String dateStr, final String format) {
|
||||
return new DateTime(dateStr, format);
|
||||
@ -294,7 +294,7 @@ public class DateTime extends Date {
|
||||
*
|
||||
* @param dateStr Date字符串
|
||||
* @param format 格式
|
||||
* @see DatePattern
|
||||
* @see DateFormatPool
|
||||
*/
|
||||
public DateTime(final CharSequence dateStr, final String format) {
|
||||
this(GlobalCustomFormat.isCustomFormat(format)
|
||||
@ -307,7 +307,7 @@ public class DateTime extends Date {
|
||||
*
|
||||
* @param dateStr Date字符串
|
||||
* @param dateFormat 格式化器 {@link SimpleDateFormat}
|
||||
* @see DatePattern
|
||||
* @see DateFormatPool
|
||||
*/
|
||||
public DateTime(final CharSequence dateStr, final DateFormat dateFormat) {
|
||||
this(parse(dateStr, dateFormat), dateFormat.getTimeZone());
|
||||
@ -329,7 +329,7 @@ public class DateTime extends Date {
|
||||
*
|
||||
* @param dateStr Date字符串
|
||||
* @param dateParser 格式化器 {@link DateParser},可以使用 {@link FastDateFormat}
|
||||
* @see DatePattern
|
||||
* @see DateFormatPool
|
||||
*/
|
||||
public DateTime(final CharSequence dateStr, final PositionDateParser dateParser) {
|
||||
this(dateStr, dateParser, SystemUtil.getBoolean(SystemUtil.HUTOOL_DATE_LENIENT, true));
|
||||
@ -341,7 +341,7 @@ public class DateTime extends Date {
|
||||
* @param dateStr Date字符串
|
||||
* @param dateParser 格式化器 {@link DateParser},可以使用 {@link FastDateFormat}
|
||||
* @param lenient 是否宽容模式
|
||||
* @see DatePattern
|
||||
* @see DateFormatPool
|
||||
*/
|
||||
public DateTime(final CharSequence dateStr, final PositionDateParser dateParser, final boolean lenient) {
|
||||
this(parse(dateStr, dateParser, lenient));
|
||||
@ -1004,9 +1004,9 @@ public class DateTime extends Date {
|
||||
*/
|
||||
public String toString(final TimeZone timeZone) {
|
||||
if (null != timeZone) {
|
||||
return toString(DateUtil.newSimpleFormat(DatePattern.NORM_DATETIME_PATTERN, null, timeZone));
|
||||
return toString(DateUtil.newSimpleFormat(DateFormatPool.NORM_DATETIME_PATTERN, null, timeZone));
|
||||
}
|
||||
return toString(DatePattern.NORM_DATETIME_FORMAT);
|
||||
return toString(DateFormatPool.NORM_DATETIME_FORMAT);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -1017,9 +1017,9 @@ public class DateTime extends Date {
|
||||
*/
|
||||
public String toDateStr() {
|
||||
if (null != this.timeZone) {
|
||||
return toString(DateUtil.newSimpleFormat(DatePattern.NORM_DATE_PATTERN, null, timeZone));
|
||||
return toString(DateUtil.newSimpleFormat(DateFormatPool.NORM_DATE_PATTERN, null, timeZone));
|
||||
}
|
||||
return toString(DatePattern.NORM_DATE_FORMAT);
|
||||
return toString(DateFormatPool.NORM_DATE_FORMAT);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -1030,15 +1030,15 @@ public class DateTime extends Date {
|
||||
*/
|
||||
public String toTimeStr() {
|
||||
if (null != this.timeZone) {
|
||||
return toString(DateUtil.newSimpleFormat(DatePattern.NORM_TIME_PATTERN, null, timeZone));
|
||||
return toString(DateUtil.newSimpleFormat(DateFormatPool.NORM_TIME_PATTERN, null, timeZone));
|
||||
}
|
||||
return toString(DatePattern.NORM_TIME_FORMAT);
|
||||
return toString(DateFormatPool.NORM_TIME_FORMAT);
|
||||
}
|
||||
|
||||
/**
|
||||
* 转为字符串
|
||||
*
|
||||
* @param format 日期格式,常用格式见: {@link DatePattern}
|
||||
* @param format 日期格式,常用格式见: {@link DateFormatPool}
|
||||
* @return String
|
||||
*/
|
||||
public String toString(final String format) {
|
||||
@ -1072,7 +1072,7 @@ public class DateTime extends Date {
|
||||
* @return 输出精确到毫秒的标准日期形式
|
||||
*/
|
||||
public String toMsStr() {
|
||||
return toString(DatePattern.NORM_DATETIME_MS_FORMAT);
|
||||
return toString(DateFormatPool.NORM_DATETIME_MS_FORMAT);
|
||||
}
|
||||
// -------------------------------------------------------------------- toString end
|
||||
|
||||
|
@ -46,7 +46,7 @@ import java.util.stream.Collectors;
|
||||
*
|
||||
* @author Looly
|
||||
* @see TimeUtil java8日志工具类
|
||||
* @see DatePattern 日期常用格式工具类
|
||||
* @see DateFormatPool 日期常用格式工具类
|
||||
*/
|
||||
public class DateUtil {
|
||||
|
||||
@ -526,7 +526,7 @@ public class DateUtil {
|
||||
* 根据特定格式格式化日期
|
||||
*
|
||||
* @param localDateTime 被格式化的日期
|
||||
* @param format 日期格式,常用格式见: {@link DatePattern}
|
||||
* @param format 日期格式,常用格式见: {@link DateFormatPool}
|
||||
* @return 格式化后的字符串
|
||||
*/
|
||||
public static String format(final LocalDateTime localDateTime, final String format) {
|
||||
@ -537,7 +537,7 @@ public class DateUtil {
|
||||
* 根据特定格式格式化日期
|
||||
*
|
||||
* @param date 被格式化的日期
|
||||
* @param format 日期格式,常用格式见: {@link DatePattern} {@link DatePattern#NORM_DATETIME_PATTERN}
|
||||
* @param format 日期格式,常用格式见: {@link DateFormatPool} {@link DateFormatPool#NORM_DATETIME_PATTERN}
|
||||
* @return 格式化后的字符串
|
||||
*/
|
||||
public static String format(final Date date, final String format) {
|
||||
@ -561,7 +561,7 @@ public class DateUtil {
|
||||
* 根据特定格式格式化日期
|
||||
*
|
||||
* @param date 被格式化的日期
|
||||
* @param format {@link DatePrinter} 或 {@link FastDateFormat} {@link DatePattern#NORM_DATETIME_FORMAT}
|
||||
* @param format {@link DatePrinter} 或 {@link FastDateFormat} {@link DateFormatPool#NORM_DATETIME_FORMAT}
|
||||
* @return 格式化后的字符串
|
||||
*/
|
||||
public static String format(final Date date, final DatePrinter format) {
|
||||
@ -589,7 +589,7 @@ public class DateUtil {
|
||||
* 根据特定格式格式化日期
|
||||
*
|
||||
* @param date 被格式化的日期
|
||||
* @param format {@link SimpleDateFormat} {@link DatePattern#NORM_DATETIME_FORMATTER}
|
||||
* @param format {@link SimpleDateFormat} {@link DateFormatPool#NORM_DATETIME_FORMATTER}
|
||||
* @return 格式化后的字符串
|
||||
* @since 5.0.0
|
||||
*/
|
||||
@ -613,7 +613,7 @@ public class DateUtil {
|
||||
if (null == date) {
|
||||
return null;
|
||||
}
|
||||
return DatePattern.NORM_DATETIME_FORMAT.format(date);
|
||||
return DateFormatPool.NORM_DATETIME_FORMAT.format(date);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -627,7 +627,7 @@ public class DateUtil {
|
||||
if (null == date) {
|
||||
return null;
|
||||
}
|
||||
return DatePattern.NORM_DATE_FORMAT.format(date);
|
||||
return DateFormatPool.NORM_DATE_FORMAT.format(date);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -642,7 +642,7 @@ public class DateUtil {
|
||||
if (null == date) {
|
||||
return null;
|
||||
}
|
||||
return DatePattern.NORM_TIME_FORMAT.format(date);
|
||||
return DateFormatPool.NORM_TIME_FORMAT.format(date);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -656,7 +656,7 @@ public class DateUtil {
|
||||
if (null == date) {
|
||||
return null;
|
||||
}
|
||||
return DatePattern.HTTP_DATETIME_FORMAT_GMT.format(date);
|
||||
return DateFormatPool.HTTP_DATETIME_FORMAT_GMT.format(date);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -674,7 +674,7 @@ public class DateUtil {
|
||||
}
|
||||
|
||||
if (!isUppercase) {
|
||||
return (withTime ? DatePattern.CHINESE_DATE_TIME_FORMAT : DatePattern.CHINESE_DATE_FORMAT).format(date);
|
||||
return (withTime ? DateFormatPool.CHINESE_DATE_TIME_FORMAT : DateFormatPool.CHINESE_DATE_FORMAT).format(date);
|
||||
}
|
||||
|
||||
return CalendarUtil.formatChineseDate(CalendarUtil.calendar(date), withTime);
|
||||
@ -1814,7 +1814,7 @@ public class DateUtil {
|
||||
*
|
||||
* @param date1 日期1
|
||||
* @param date2 日期2
|
||||
* @param format 日期格式,常用格式见: {@link DatePattern}; 允许为空; date1 date2; eg: yyyy-MM-dd
|
||||
* @param format 日期格式,常用格式见: {@link DateFormatPool}; 允许为空; date1 date2; eg: yyyy-MM-dd
|
||||
* @return 比较结果,如果date1 < date2,返回数小于0,date1==date2返回0,date1 > date2 大于0
|
||||
* @author dazer
|
||||
* @since 5.6.4
|
||||
|
@ -40,7 +40,7 @@ import java.util.function.Function;
|
||||
*
|
||||
* @author looly
|
||||
* @see DateUtil java7及其以下版本,使用Date工具类
|
||||
* @see DatePattern 常用格式工具类
|
||||
* @see DateFormatPool 常用格式工具类
|
||||
* @since 6.0.0
|
||||
*/
|
||||
public class TimeUtil extends TemporalAccessorUtil {
|
||||
@ -298,7 +298,7 @@ public class TimeUtil extends TemporalAccessorUtil {
|
||||
if (StrUtil.contains(text, 'T')) {
|
||||
return parse(text, DateTimeFormatter.ISO_LOCAL_DATE_TIME);
|
||||
} else {
|
||||
return parse(text, DatePattern.NORM_DATETIME_FORMATTER);
|
||||
return parse(text, DateFormatPool.NORM_DATETIME_FORMATTER);
|
||||
}
|
||||
}
|
||||
|
||||
@ -343,14 +343,14 @@ public class TimeUtil extends TemporalAccessorUtil {
|
||||
// fix issue#1082
|
||||
//see https://stackoverflow.com/questions/22588051/is-java-time-failing-to-parse-fraction-of-second
|
||||
// jdk8 bug at: https://bugs.openjdk.java.net/browse/JDK-8031085
|
||||
if (StrUtil.startWithIgnoreEquals(format, DatePattern.PURE_DATETIME_PATTERN) && format.endsWith("S")) {
|
||||
if (StrUtil.startWithIgnoreEquals(format, DateFormatPool.PURE_DATETIME_PATTERN) && format.endsWith("S")) {
|
||||
// 需要填充的0的个数
|
||||
final int paddingWidth = 3 - (format.length() - DatePattern.PURE_DATETIME_PATTERN.length());
|
||||
final int paddingWidth = 3 - (format.length() - DateFormatPool.PURE_DATETIME_PATTERN.length());
|
||||
if (paddingWidth > 0) {
|
||||
//将yyyyMMddHHmmssS、yyyyMMddHHmmssSS的日期统一替换为yyyyMMddHHmmssSSS格式,用0补
|
||||
text += StrUtil.repeat('0', paddingWidth);
|
||||
}
|
||||
formatter = DatePattern.PURE_DATETIME_MS_FORMATTER;
|
||||
formatter = DateFormatPool.PURE_DATETIME_MS_FORMATTER;
|
||||
} else {
|
||||
formatter = DateTimeFormatter.ofPattern(format);
|
||||
}
|
||||
@ -411,7 +411,7 @@ public class TimeUtil extends TemporalAccessorUtil {
|
||||
* @since 5.3.11
|
||||
*/
|
||||
public static String formatNormal(final ChronoLocalDateTime<?> time) {
|
||||
return format(time, DatePattern.NORM_DATETIME_FORMATTER);
|
||||
return format(time, DateFormatPool.NORM_DATETIME_FORMATTER);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -422,7 +422,7 @@ public class TimeUtil extends TemporalAccessorUtil {
|
||||
* @since 5.3.11
|
||||
*/
|
||||
public static String formatNormal(final ChronoLocalDate date) {
|
||||
return format(date, DatePattern.NORM_DATE_FORMATTER);
|
||||
return format(date, DateFormatPool.NORM_DATE_FORMATTER);
|
||||
}
|
||||
|
||||
|
||||
|
@ -23,7 +23,6 @@ import java.util.TimeZone;
|
||||
* 日期基本信息获取接口
|
||||
*
|
||||
* @author Looly
|
||||
* @since 2.16.2
|
||||
*/
|
||||
public interface DateBasic {
|
||||
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -22,8 +22,8 @@ import java.util.Date;
|
||||
/**
|
||||
* 日期格式化输出接口<br>
|
||||
* Thanks to Apache Commons Lang 3.5
|
||||
*
|
||||
* @author Looly
|
||||
* @since 2.16.2
|
||||
*/
|
||||
public interface DatePrinter extends DateBasic {
|
||||
|
||||
|
@ -17,7 +17,7 @@
|
||||
package org.dromara.hutool.core.date.format;
|
||||
|
||||
import org.dromara.hutool.core.date.DateException;
|
||||
import org.dromara.hutool.core.date.DatePattern;
|
||||
import org.dromara.hutool.core.date.DateFormatPool;
|
||||
import org.dromara.hutool.core.date.format.parser.FastDateParser;
|
||||
import org.dromara.hutool.core.date.format.parser.PositionDateParser;
|
||||
|
||||
@ -47,7 +47,6 @@ import java.util.TimeZone;
|
||||
* </p>
|
||||
* Thanks to Apache Commons Lang 3.5
|
||||
*
|
||||
* @since 2.16.2
|
||||
*/
|
||||
public class FastDateFormat extends Format implements PositionDateParser, DatePrinter {
|
||||
private static final long serialVersionUID = 8097890768636183236L;
|
||||
@ -413,7 +412,7 @@ public class FastDateFormat extends Format implements PositionDateParser, DatePr
|
||||
|
||||
/**
|
||||
* 便捷获取 DateTimeFormatter
|
||||
* 由于 {@link DatePattern} 很大一部分的格式没有提供 {@link DateTimeFormatter},因此这里提供快捷获取方式
|
||||
* 由于 {@link DateFormatPool} 很大一部分的格式没有提供 {@link DateTimeFormatter},因此这里提供快捷获取方式
|
||||
*
|
||||
* @return DateTimeFormatter
|
||||
* @author dazer neusoft
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -332,23 +332,23 @@ public class FastDateParser extends SimpleDateBasic implements PositionDateParse
|
||||
/**
|
||||
* 单个日期字段的分析策略
|
||||
*/
|
||||
private static abstract class Strategy {
|
||||
interface Strategy {
|
||||
boolean parse(FastDateParser parser, Calendar calendar, CharSequence source, ParsePosition pos, int maxWidth);
|
||||
|
||||
/**
|
||||
* Is this field a number? The default implementation returns false.
|
||||
* 是否为数字,默认{@code false}
|
||||
*
|
||||
* @return true, if field is a number
|
||||
* @return {@code true}表示为数字
|
||||
*/
|
||||
boolean isNumber() {
|
||||
default boolean isNumber() {
|
||||
return false;
|
||||
}
|
||||
|
||||
abstract boolean parse(FastDateParser parser, Calendar calendar, CharSequence source, ParsePosition pos, int maxWidth);
|
||||
}
|
||||
|
||||
/**
|
||||
* A strategy to parse a single field from the parsing pattern
|
||||
*/
|
||||
private static abstract class PatternStrategy extends Strategy {
|
||||
private static abstract class PatternStrategy implements Strategy {
|
||||
|
||||
private Pattern pattern;
|
||||
|
||||
@ -361,7 +361,7 @@ public class FastDateParser extends SimpleDateBasic implements PositionDateParse
|
||||
}
|
||||
|
||||
@Override
|
||||
boolean parse(final FastDateParser parser, final Calendar calendar, final CharSequence source, final ParsePosition pos, final int maxWidth) {
|
||||
public boolean parse(final FastDateParser parser, final Calendar calendar, final CharSequence source, final ParsePosition pos, final int maxWidth) {
|
||||
final Matcher matcher = pattern.matcher(source.subSequence(pos.getIndex(), source.length()));
|
||||
if (!matcher.lookingAt()) {
|
||||
pos.setErrorIndex(pos.getIndex());
|
||||
@ -477,7 +477,7 @@ public class FastDateParser extends SimpleDateBasic implements PositionDateParse
|
||||
/**
|
||||
* A strategy that copies the static or quoted field in the parsing pattern
|
||||
*/
|
||||
private static class CopyQuotedStrategy extends Strategy {
|
||||
private static class CopyQuotedStrategy implements Strategy {
|
||||
|
||||
final private String formatField;
|
||||
|
||||
@ -491,7 +491,7 @@ public class FastDateParser extends SimpleDateBasic implements PositionDateParse
|
||||
}
|
||||
|
||||
@Override
|
||||
boolean parse(final FastDateParser parser, final Calendar calendar, final CharSequence source, final ParsePosition pos, final int maxWidth) {
|
||||
public boolean parse(final FastDateParser parser, final Calendar calendar, final CharSequence source, final ParsePosition pos, final int maxWidth) {
|
||||
for (int idx = 0; idx < formatField.length(); ++idx) {
|
||||
final int sIdx = idx + pos.getIndex();
|
||||
if (sIdx == source.length()) {
|
||||
@ -545,7 +545,7 @@ public class FastDateParser extends SimpleDateBasic implements PositionDateParse
|
||||
/**
|
||||
* A strategy that handles a number field in the parsing pattern
|
||||
*/
|
||||
private static class NumberStrategy extends Strategy {
|
||||
private static class NumberStrategy implements Strategy {
|
||||
private final int field;
|
||||
|
||||
/**
|
||||
@ -558,12 +558,12 @@ public class FastDateParser extends SimpleDateBasic implements PositionDateParse
|
||||
}
|
||||
|
||||
@Override
|
||||
boolean isNumber() {
|
||||
public boolean isNumber() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
boolean parse(final FastDateParser parser, final Calendar calendar, final CharSequence source, final ParsePosition pos, final int maxWidth) {
|
||||
public boolean parse(final FastDateParser parser, final Calendar calendar, final CharSequence source, final ParsePosition pos, final int maxWidth) {
|
||||
int idx = pos.getIndex();
|
||||
int last = source.length();
|
||||
|
||||
|
@ -16,7 +16,7 @@
|
||||
|
||||
package org.dromara.hutool.core.date.format.parser;
|
||||
|
||||
import org.dromara.hutool.core.date.DatePattern;
|
||||
import org.dromara.hutool.core.date.DateFormatPool;
|
||||
import org.dromara.hutool.core.date.DateTime;
|
||||
import org.dromara.hutool.core.date.DateUtil;
|
||||
import org.dromara.hutool.core.regex.PatternPool;
|
||||
@ -57,10 +57,10 @@ public class TimeParser implements PredicateDateParser, Serializable {
|
||||
source = StrUtil.format("{} {}", DateUtil.formatToday(), source);
|
||||
if (1 == StrUtil.count(source, ':')) {
|
||||
// 时间格式为 HH:mm
|
||||
return new DateTime(source, DatePattern.NORM_DATETIME_MINUTE_PATTERN);
|
||||
return new DateTime(source, DateFormatPool.NORM_DATETIME_MINUTE_PATTERN);
|
||||
} else {
|
||||
// 时间格式为 HH:mm:ss
|
||||
return new DateTime(source, DatePattern.NORM_DATETIME_FORMAT);
|
||||
return new DateTime(source, DateFormatPool.NORM_DATETIME_FORMAT);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -38,7 +38,7 @@ public class CalendarUtilTest {
|
||||
public void parseTest(){
|
||||
Assertions.assertThrows(IllegalArgumentException.class, ()->{
|
||||
final Calendar calendar = CalendarUtil.parse("2021-09-27 00:00:112323", false,
|
||||
DatePattern.NORM_DATETIME_FORMAT);
|
||||
DateFormatPool.NORM_DATETIME_FORMAT);
|
||||
|
||||
// https://github.com/dromara/hutool/issues/1849
|
||||
// 在使用严格模式时,秒不正确,抛出异常
|
||||
|
@ -30,47 +30,47 @@ public class DateModifierTest {
|
||||
|
||||
// 毫秒
|
||||
DateTime begin = DateUtil.truncate(date, DateField.MILLISECOND);
|
||||
Assertions.assertEquals(dateStr, begin.toString(DatePattern.NORM_DATETIME_MS_PATTERN));
|
||||
Assertions.assertEquals(dateStr, begin.toString(DateFormatPool.NORM_DATETIME_MS_PATTERN));
|
||||
|
||||
// 秒
|
||||
begin = DateUtil.truncate(date, DateField.SECOND);
|
||||
Assertions.assertEquals("2017-03-01 22:33:23.000", begin.toString(DatePattern.NORM_DATETIME_MS_PATTERN));
|
||||
Assertions.assertEquals("2017-03-01 22:33:23.000", begin.toString(DateFormatPool.NORM_DATETIME_MS_PATTERN));
|
||||
|
||||
// 分
|
||||
begin = DateUtil.truncate(date, DateField.MINUTE);
|
||||
Assertions.assertEquals("2017-03-01 22:33:00.000", begin.toString(DatePattern.NORM_DATETIME_MS_PATTERN));
|
||||
Assertions.assertEquals("2017-03-01 22:33:00.000", begin.toString(DateFormatPool.NORM_DATETIME_MS_PATTERN));
|
||||
|
||||
// 小时
|
||||
begin = DateUtil.truncate(date, DateField.HOUR);
|
||||
Assertions.assertEquals("2017-03-01 22:00:00.000", begin.toString(DatePattern.NORM_DATETIME_MS_PATTERN));
|
||||
Assertions.assertEquals("2017-03-01 22:00:00.000", begin.toString(DateFormatPool.NORM_DATETIME_MS_PATTERN));
|
||||
begin = DateUtil.truncate(date, DateField.HOUR_OF_DAY);
|
||||
Assertions.assertEquals("2017-03-01 22:00:00.000", begin.toString(DatePattern.NORM_DATETIME_MS_PATTERN));
|
||||
Assertions.assertEquals("2017-03-01 22:00:00.000", begin.toString(DateFormatPool.NORM_DATETIME_MS_PATTERN));
|
||||
|
||||
// 上下午,原始日期是22点,上下午的起始就是12点
|
||||
begin = DateUtil.truncate(date, DateField.AM_PM);
|
||||
Assertions.assertEquals("2017-03-01 12:00:00.000", begin.toString(DatePattern.NORM_DATETIME_MS_PATTERN));
|
||||
Assertions.assertEquals("2017-03-01 12:00:00.000", begin.toString(DateFormatPool.NORM_DATETIME_MS_PATTERN));
|
||||
|
||||
// 天,day of xxx按照day处理
|
||||
begin = DateUtil.truncate(date, DateField.DAY_OF_WEEK_IN_MONTH);
|
||||
Assertions.assertEquals("2017-03-01 00:00:00.000", begin.toString(DatePattern.NORM_DATETIME_MS_PATTERN));
|
||||
Assertions.assertEquals("2017-03-01 00:00:00.000", begin.toString(DateFormatPool.NORM_DATETIME_MS_PATTERN));
|
||||
begin = DateUtil.truncate(date, DateField.DAY_OF_WEEK);
|
||||
Assertions.assertEquals("2017-03-01 00:00:00.000", begin.toString(DatePattern.NORM_DATETIME_MS_PATTERN));
|
||||
Assertions.assertEquals("2017-03-01 00:00:00.000", begin.toString(DateFormatPool.NORM_DATETIME_MS_PATTERN));
|
||||
begin = DateUtil.truncate(date, DateField.DAY_OF_MONTH);
|
||||
Assertions.assertEquals("2017-03-01 00:00:00.000", begin.toString(DatePattern.NORM_DATETIME_MS_PATTERN));
|
||||
Assertions.assertEquals("2017-03-01 00:00:00.000", begin.toString(DateFormatPool.NORM_DATETIME_MS_PATTERN));
|
||||
|
||||
// 星期
|
||||
begin = DateUtil.truncate(date, DateField.WEEK_OF_MONTH);
|
||||
Assertions.assertEquals("2017-02-27 00:00:00.000", begin.toString(DatePattern.NORM_DATETIME_MS_PATTERN));
|
||||
Assertions.assertEquals("2017-02-27 00:00:00.000", begin.toString(DateFormatPool.NORM_DATETIME_MS_PATTERN));
|
||||
begin = DateUtil.truncate(date, DateField.WEEK_OF_YEAR);
|
||||
Assertions.assertEquals("2017-02-27 00:00:00.000", begin.toString(DatePattern.NORM_DATETIME_MS_PATTERN));
|
||||
Assertions.assertEquals("2017-02-27 00:00:00.000", begin.toString(DateFormatPool.NORM_DATETIME_MS_PATTERN));
|
||||
|
||||
// 月
|
||||
begin = DateUtil.truncate(date, DateField.MONTH);
|
||||
Assertions.assertEquals("2017-03-01 00:00:00.000", begin.toString(DatePattern.NORM_DATETIME_MS_PATTERN));
|
||||
Assertions.assertEquals("2017-03-01 00:00:00.000", begin.toString(DateFormatPool.NORM_DATETIME_MS_PATTERN));
|
||||
|
||||
// 年
|
||||
begin = DateUtil.truncate(date, DateField.YEAR);
|
||||
Assertions.assertEquals("2017-01-01 00:00:00.000", begin.toString(DatePattern.NORM_DATETIME_MS_PATTERN));
|
||||
Assertions.assertEquals("2017-01-01 00:00:00.000", begin.toString(DateFormatPool.NORM_DATETIME_MS_PATTERN));
|
||||
}
|
||||
|
||||
@Test
|
||||
@ -80,7 +80,7 @@ public class DateModifierTest {
|
||||
|
||||
// 天,day of xxx按照day处理
|
||||
final DateTime begin = DateUtil.truncate(date, DateField.DAY_OF_WEEK_IN_MONTH);
|
||||
Assertions.assertEquals("2017-03-01 00:00:00.000", begin.toString(DatePattern.NORM_DATETIME_MS_PATTERN));
|
||||
Assertions.assertEquals("2017-03-01 00:00:00.000", begin.toString(DateFormatPool.NORM_DATETIME_MS_PATTERN));
|
||||
}
|
||||
|
||||
@Test
|
||||
@ -90,47 +90,47 @@ public class DateModifierTest {
|
||||
|
||||
// 毫秒
|
||||
DateTime begin = DateUtil.ceiling(date, DateField.MILLISECOND, false);
|
||||
Assertions.assertEquals(dateStr, begin.toString(DatePattern.NORM_DATETIME_MS_PATTERN));
|
||||
Assertions.assertEquals(dateStr, begin.toString(DateFormatPool.NORM_DATETIME_MS_PATTERN));
|
||||
|
||||
// 秒
|
||||
begin = DateUtil.ceiling(date, DateField.SECOND, false);
|
||||
Assertions.assertEquals("2017-03-01 22:33:23.999", begin.toString(DatePattern.NORM_DATETIME_MS_PATTERN));
|
||||
Assertions.assertEquals("2017-03-01 22:33:23.999", begin.toString(DateFormatPool.NORM_DATETIME_MS_PATTERN));
|
||||
|
||||
// 分
|
||||
begin = DateUtil.ceiling(date, DateField.MINUTE, false);
|
||||
Assertions.assertEquals("2017-03-01 22:33:59.999", begin.toString(DatePattern.NORM_DATETIME_MS_PATTERN));
|
||||
Assertions.assertEquals("2017-03-01 22:33:59.999", begin.toString(DateFormatPool.NORM_DATETIME_MS_PATTERN));
|
||||
|
||||
// 小时
|
||||
begin = DateUtil.ceiling(date, DateField.HOUR, false);
|
||||
Assertions.assertEquals("2017-03-01 22:59:59.999", begin.toString(DatePattern.NORM_DATETIME_MS_PATTERN));
|
||||
Assertions.assertEquals("2017-03-01 22:59:59.999", begin.toString(DateFormatPool.NORM_DATETIME_MS_PATTERN));
|
||||
begin = DateUtil.ceiling(date, DateField.HOUR_OF_DAY, false);
|
||||
Assertions.assertEquals("2017-03-01 22:59:59.999", begin.toString(DatePattern.NORM_DATETIME_MS_PATTERN));
|
||||
Assertions.assertEquals("2017-03-01 22:59:59.999", begin.toString(DateFormatPool.NORM_DATETIME_MS_PATTERN));
|
||||
|
||||
// 上下午,原始日期是22点,上下午的结束就是23点
|
||||
begin = DateUtil.ceiling(date, DateField.AM_PM, false);
|
||||
Assertions.assertEquals("2017-03-01 23:59:59.999", begin.toString(DatePattern.NORM_DATETIME_MS_PATTERN));
|
||||
Assertions.assertEquals("2017-03-01 23:59:59.999", begin.toString(DateFormatPool.NORM_DATETIME_MS_PATTERN));
|
||||
|
||||
// 天,day of xxx按照day处理
|
||||
begin = DateUtil.ceiling(date, DateField.DAY_OF_WEEK_IN_MONTH, false);
|
||||
Assertions.assertEquals("2017-03-01 23:59:59.999", begin.toString(DatePattern.NORM_DATETIME_MS_PATTERN));
|
||||
Assertions.assertEquals("2017-03-01 23:59:59.999", begin.toString(DateFormatPool.NORM_DATETIME_MS_PATTERN));
|
||||
begin = DateUtil.ceiling(date, DateField.DAY_OF_WEEK, false);
|
||||
Assertions.assertEquals("2017-03-01 23:59:59.999", begin.toString(DatePattern.NORM_DATETIME_MS_PATTERN));
|
||||
Assertions.assertEquals("2017-03-01 23:59:59.999", begin.toString(DateFormatPool.NORM_DATETIME_MS_PATTERN));
|
||||
begin = DateUtil.ceiling(date, DateField.DAY_OF_MONTH, false);
|
||||
Assertions.assertEquals("2017-03-01 23:59:59.999", begin.toString(DatePattern.NORM_DATETIME_MS_PATTERN));
|
||||
Assertions.assertEquals("2017-03-01 23:59:59.999", begin.toString(DateFormatPool.NORM_DATETIME_MS_PATTERN));
|
||||
|
||||
// 星期
|
||||
begin = DateUtil.ceiling(date, DateField.WEEK_OF_MONTH, false);
|
||||
Assertions.assertEquals("2017-03-05 23:59:59.999", begin.toString(DatePattern.NORM_DATETIME_MS_PATTERN));
|
||||
Assertions.assertEquals("2017-03-05 23:59:59.999", begin.toString(DateFormatPool.NORM_DATETIME_MS_PATTERN));
|
||||
begin = DateUtil.ceiling(date, DateField.WEEK_OF_YEAR, false);
|
||||
Assertions.assertEquals("2017-03-05 23:59:59.999", begin.toString(DatePattern.NORM_DATETIME_MS_PATTERN));
|
||||
Assertions.assertEquals("2017-03-05 23:59:59.999", begin.toString(DateFormatPool.NORM_DATETIME_MS_PATTERN));
|
||||
|
||||
// 月
|
||||
begin = DateUtil.ceiling(date, DateField.MONTH, false);
|
||||
Assertions.assertEquals("2017-03-31 23:59:59.999", begin.toString(DatePattern.NORM_DATETIME_MS_PATTERN));
|
||||
Assertions.assertEquals("2017-03-31 23:59:59.999", begin.toString(DateFormatPool.NORM_DATETIME_MS_PATTERN));
|
||||
|
||||
// 年
|
||||
begin = DateUtil.ceiling(date, DateField.YEAR, false);
|
||||
Assertions.assertEquals("2017-12-31 23:59:59.999", begin.toString(DatePattern.NORM_DATETIME_MS_PATTERN));
|
||||
Assertions.assertEquals("2017-12-31 23:59:59.999", begin.toString(DateFormatPool.NORM_DATETIME_MS_PATTERN));
|
||||
}
|
||||
|
||||
@Test
|
||||
@ -140,6 +140,6 @@ public class DateModifierTest {
|
||||
final Date date = DateUtil.parse(dateStr);
|
||||
|
||||
final DateTime dateTime = DateUtil.round(date, DateField.SECOND);
|
||||
Assertions.assertEquals("2022-08-12 14:59:21.999", dateTime.toString(DatePattern.NORM_DATETIME_MS_PATTERN));
|
||||
Assertions.assertEquals("2022-08-12 14:59:21.999", dateTime.toString(DateFormatPool.NORM_DATETIME_MS_PATTERN));
|
||||
}
|
||||
}
|
||||
|
@ -31,7 +31,7 @@ public class DateTimeTest {
|
||||
|
||||
@Test
|
||||
public void datetimeTest() {
|
||||
final DateTime dateTime = new DateTime("2017-01-05 12:34:23", DatePattern.NORM_DATETIME_FORMAT);
|
||||
final DateTime dateTime = new DateTime("2017-01-05 12:34:23", DateFormatPool.NORM_DATETIME_FORMAT);
|
||||
|
||||
// 年
|
||||
final int year = dateTime.year();
|
||||
@ -73,36 +73,36 @@ public class DateTimeTest {
|
||||
|
||||
@Test
|
||||
public void quarterTest() {
|
||||
DateTime dateTime = new DateTime("2017-01-05 12:34:23", DatePattern.NORM_DATETIME_FORMAT);
|
||||
DateTime dateTime = new DateTime("2017-01-05 12:34:23", DateFormatPool.NORM_DATETIME_FORMAT);
|
||||
Quarter quarter = dateTime.quarterEnum();
|
||||
Assertions.assertEquals(Quarter.Q1, quarter);
|
||||
|
||||
dateTime = new DateTime("2017-04-05 12:34:23", DatePattern.NORM_DATETIME_FORMAT);
|
||||
dateTime = new DateTime("2017-04-05 12:34:23", DateFormatPool.NORM_DATETIME_FORMAT);
|
||||
quarter = dateTime.quarterEnum();
|
||||
Assertions.assertEquals(Quarter.Q2, quarter);
|
||||
|
||||
dateTime = new DateTime("2017-07-05 12:34:23", DatePattern.NORM_DATETIME_FORMAT);
|
||||
dateTime = new DateTime("2017-07-05 12:34:23", DateFormatPool.NORM_DATETIME_FORMAT);
|
||||
quarter = dateTime.quarterEnum();
|
||||
Assertions.assertEquals(Quarter.Q3, quarter);
|
||||
|
||||
dateTime = new DateTime("2017-10-05 12:34:23", DatePattern.NORM_DATETIME_FORMAT);
|
||||
dateTime = new DateTime("2017-10-05 12:34:23", DateFormatPool.NORM_DATETIME_FORMAT);
|
||||
quarter = dateTime.quarterEnum();
|
||||
Assertions.assertEquals(Quarter.Q4, quarter);
|
||||
|
||||
// 精确到毫秒
|
||||
final DateTime beginTime = new DateTime("2017-10-01 00:00:00.000", DatePattern.NORM_DATETIME_MS_FORMAT);
|
||||
final DateTime beginTime = new DateTime("2017-10-01 00:00:00.000", DateFormatPool.NORM_DATETIME_MS_FORMAT);
|
||||
dateTime = DateUtil.beginOfQuarter(dateTime);
|
||||
Assertions.assertEquals(beginTime, dateTime);
|
||||
|
||||
// 精确到毫秒
|
||||
final DateTime endTime = new DateTime("2017-12-31 23:59:59.999", DatePattern.NORM_DATETIME_MS_FORMAT);
|
||||
final DateTime endTime = new DateTime("2017-12-31 23:59:59.999", DateFormatPool.NORM_DATETIME_MS_FORMAT);
|
||||
dateTime = DateUtil.endOfQuarter(dateTime, false);
|
||||
Assertions.assertEquals(endTime, dateTime);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void mutableTest() {
|
||||
final DateTime dateTime = new DateTime("2017-01-05 12:34:23", DatePattern.NORM_DATETIME_FORMAT);
|
||||
final DateTime dateTime = new DateTime("2017-01-05 12:34:23", DateFormatPool.NORM_DATETIME_FORMAT);
|
||||
|
||||
// 默认情况下DateTime为可变对象
|
||||
DateTime offsite = dateTime.offset(DateField.YEAR, 0);
|
||||
@ -116,7 +116,7 @@ public class DateTimeTest {
|
||||
|
||||
@Test
|
||||
public void toStringTest() {
|
||||
final DateTime dateTime = new DateTime("2017-01-05 12:34:23", DatePattern.NORM_DATETIME_FORMAT);
|
||||
final DateTime dateTime = new DateTime("2017-01-05 12:34:23", DateFormatPool.NORM_DATETIME_FORMAT);
|
||||
Assertions.assertEquals("2017-01-05 12:34:23", dateTime.toString());
|
||||
|
||||
final String dateStr = dateTime.toString("yyyy/MM/dd");
|
||||
@ -125,18 +125,18 @@ public class DateTimeTest {
|
||||
|
||||
@Test
|
||||
public void toStringTest2() {
|
||||
final DateTime dateTime = new DateTime("2017-01-05 12:34:23", DatePattern.NORM_DATETIME_FORMAT);
|
||||
final DateTime dateTime = new DateTime("2017-01-05 12:34:23", DateFormatPool.NORM_DATETIME_FORMAT);
|
||||
|
||||
String dateStr = dateTime.toString(DatePattern.ISO8601_WITH_ZONE_OFFSET_PATTERN);
|
||||
String dateStr = dateTime.toString(DateFormatPool.ISO8601_WITH_ZONE_OFFSET_PATTERN);
|
||||
Assertions.assertEquals("2017-01-05T12:34:23+0800", dateStr);
|
||||
|
||||
dateStr = dateTime.toString(DatePattern.ISO8601_WITH_XXX_OFFSET_PATTERN);
|
||||
dateStr = dateTime.toString(DateFormatPool.ISO8601_WITH_XXX_OFFSET_PATTERN);
|
||||
Assertions.assertEquals("2017-01-05T12:34:23+08:00", dateStr);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void toStringWithTimeZoneTest() {
|
||||
final DateTime dateTime = new DateTime("2017-01-05 12:34:23", DatePattern.NORM_DATETIME_FORMAT);
|
||||
final DateTime dateTime = new DateTime("2017-01-05 12:34:23", DateFormatPool.NORM_DATETIME_FORMAT);
|
||||
|
||||
final String dateStr = dateTime.toString(TimeZone.getTimeZone("UTC"));
|
||||
Assertions.assertEquals("2017-01-05 04:34:23", dateStr);
|
||||
@ -168,7 +168,7 @@ public class DateTimeTest {
|
||||
public void ofTest(){
|
||||
Assertions.assertThrows(IllegalArgumentException.class, ()->{
|
||||
final String a = "2021-09-27 00:00:99";
|
||||
new DateTime(a, DatePattern.NORM_DATETIME_FORMAT, false);
|
||||
new DateTime(a, DateFormatPool.NORM_DATETIME_FORMAT, false);
|
||||
});
|
||||
|
||||
}
|
||||
|
@ -142,10 +142,10 @@ public class DateUtilTest {
|
||||
|
||||
|
||||
DateTime dateTime = DateUtil.ceiling(date2, DateField.MINUTE, false);
|
||||
Assertions.assertEquals("2020-02-29 12:59:59.999", dateTime.toString(DatePattern.NORM_DATETIME_MS_PATTERN));
|
||||
Assertions.assertEquals("2020-02-29 12:59:59.999", dateTime.toString(DateFormatPool.NORM_DATETIME_MS_PATTERN));
|
||||
|
||||
dateTime = DateUtil.ceiling(date2, DateField.MINUTE, true);
|
||||
Assertions.assertEquals("2020-02-29 12:59:59.000", dateTime.toString(DatePattern.NORM_DATETIME_MS_PATTERN));
|
||||
Assertions.assertEquals("2020-02-29 12:59:59.000", dateTime.toString(DateFormatPool.NORM_DATETIME_MS_PATTERN));
|
||||
}
|
||||
|
||||
@Test
|
||||
@ -155,10 +155,10 @@ public class DateUtilTest {
|
||||
|
||||
|
||||
DateTime dateTime = DateUtil.ceiling(date2, DateField.DAY_OF_MONTH, false);
|
||||
Assertions.assertEquals("2020-02-29 23:59:59.999", dateTime.toString(DatePattern.NORM_DATETIME_MS_PATTERN));
|
||||
Assertions.assertEquals("2020-02-29 23:59:59.999", dateTime.toString(DateFormatPool.NORM_DATETIME_MS_PATTERN));
|
||||
|
||||
dateTime = DateUtil.ceiling(date2, DateField.DAY_OF_MONTH, true);
|
||||
Assertions.assertEquals("2020-02-29 23:59:59.000", dateTime.toString(DatePattern.NORM_DATETIME_MS_PATTERN));
|
||||
Assertions.assertEquals("2020-02-29 23:59:59.000", dateTime.toString(DateFormatPool.NORM_DATETIME_MS_PATTERN));
|
||||
}
|
||||
|
||||
@Test
|
||||
@ -393,13 +393,13 @@ public class DateUtilTest {
|
||||
public void parseTest3() {
|
||||
final String dateStr = "2018-10-10 12:11:11";
|
||||
final Date date = DateUtil.parse(dateStr);
|
||||
final String format = DateUtil.format(date, DatePattern.NORM_DATETIME_PATTERN);
|
||||
final String format = DateUtil.format(date, DateFormatPool.NORM_DATETIME_PATTERN);
|
||||
Assertions.assertEquals(dateStr, format);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void parseTest4() {
|
||||
final String ymd = DateUtil.parse("2019-3-21 12:20:15", "yyyy-MM-dd").toString(DatePattern.PURE_DATE_PATTERN);
|
||||
final String ymd = DateUtil.parse("2019-3-21 12:20:15", "yyyy-MM-dd").toString(DateFormatPool.PURE_DATE_PATTERN);
|
||||
Assertions.assertEquals("20190321", ymd);
|
||||
}
|
||||
|
||||
@ -407,33 +407,33 @@ public class DateUtilTest {
|
||||
public void parseTest5() {
|
||||
// 测试时间解析
|
||||
//noinspection ConstantConditions
|
||||
String time = DateUtil.parse("22:12:12").toString(DatePattern.NORM_TIME_FORMAT);
|
||||
String time = DateUtil.parse("22:12:12").toString(DateFormatPool.NORM_TIME_FORMAT);
|
||||
Assertions.assertEquals("22:12:12", time);
|
||||
//noinspection ConstantConditions
|
||||
time = DateUtil.parse("2:12:12").toString(DatePattern.NORM_TIME_FORMAT);
|
||||
time = DateUtil.parse("2:12:12").toString(DateFormatPool.NORM_TIME_FORMAT);
|
||||
Assertions.assertEquals("02:12:12", time);
|
||||
//noinspection ConstantConditions
|
||||
time = DateUtil.parse("2:2:12").toString(DatePattern.NORM_TIME_FORMAT);
|
||||
time = DateUtil.parse("2:2:12").toString(DateFormatPool.NORM_TIME_FORMAT);
|
||||
Assertions.assertEquals("02:02:12", time);
|
||||
//noinspection ConstantConditions
|
||||
time = DateUtil.parse("2:2:1").toString(DatePattern.NORM_TIME_FORMAT);
|
||||
time = DateUtil.parse("2:2:1").toString(DateFormatPool.NORM_TIME_FORMAT);
|
||||
Assertions.assertEquals("02:02:01", time);
|
||||
//noinspection ConstantConditions
|
||||
time = DateUtil.parse("22:2:1").toString(DatePattern.NORM_TIME_FORMAT);
|
||||
time = DateUtil.parse("22:2:1").toString(DateFormatPool.NORM_TIME_FORMAT);
|
||||
Assertions.assertEquals("22:02:01", time);
|
||||
//noinspection ConstantConditions
|
||||
time = DateUtil.parse("2:22:1").toString(DatePattern.NORM_TIME_FORMAT);
|
||||
time = DateUtil.parse("2:22:1").toString(DateFormatPool.NORM_TIME_FORMAT);
|
||||
Assertions.assertEquals("02:22:01", time);
|
||||
|
||||
// 测试两位时间解析
|
||||
//noinspection ConstantConditions
|
||||
time = DateUtil.parse("2:22").toString(DatePattern.NORM_TIME_FORMAT);
|
||||
time = DateUtil.parse("2:22").toString(DateFormatPool.NORM_TIME_FORMAT);
|
||||
Assertions.assertEquals("02:22:00", time);
|
||||
//noinspection ConstantConditions
|
||||
time = DateUtil.parse("12:22").toString(DatePattern.NORM_TIME_FORMAT);
|
||||
time = DateUtil.parse("12:22").toString(DateFormatPool.NORM_TIME_FORMAT);
|
||||
Assertions.assertEquals("12:22:00", time);
|
||||
//noinspection ConstantConditions
|
||||
time = DateUtil.parse("12:2").toString(DatePattern.NORM_TIME_FORMAT);
|
||||
time = DateUtil.parse("12:2").toString(DateFormatPool.NORM_TIME_FORMAT);
|
||||
Assertions.assertEquals("12:02:00", time);
|
||||
|
||||
}
|
||||
@ -475,22 +475,22 @@ public class DateUtilTest {
|
||||
String str = "2020-02-06 01:58:00.000020";
|
||||
DateTime dateTime = DateUtil.parse(str);
|
||||
Assertions.assertNotNull(dateTime);
|
||||
Assertions.assertEquals("2020-02-06 01:58:00.000", dateTime.toString(DatePattern.NORM_DATETIME_MS_PATTERN));
|
||||
Assertions.assertEquals("2020-02-06 01:58:00.000", dateTime.toString(DateFormatPool.NORM_DATETIME_MS_PATTERN));
|
||||
|
||||
str = "2020-02-06 01:58:00.00002";
|
||||
dateTime = DateUtil.parse(str);
|
||||
Assertions.assertNotNull(dateTime);
|
||||
Assertions.assertEquals("2020-02-06 01:58:00.000", dateTime.toString(DatePattern.NORM_DATETIME_MS_PATTERN));
|
||||
Assertions.assertEquals("2020-02-06 01:58:00.000", dateTime.toString(DateFormatPool.NORM_DATETIME_MS_PATTERN));
|
||||
|
||||
str = "2020-02-06 01:58:00.111000";
|
||||
dateTime = DateUtil.parse(str);
|
||||
Assertions.assertNotNull(dateTime);
|
||||
Assertions.assertEquals("2020-02-06 01:58:00.111", dateTime.toString(DatePattern.NORM_DATETIME_MS_PATTERN));
|
||||
Assertions.assertEquals("2020-02-06 01:58:00.111", dateTime.toString(DateFormatPool.NORM_DATETIME_MS_PATTERN));
|
||||
|
||||
str = "2020-02-06 01:58:00.111";
|
||||
dateTime = DateUtil.parse(str);
|
||||
Assertions.assertNotNull(dateTime);
|
||||
Assertions.assertEquals("2020-02-06 01:58:00.111", dateTime.toString(DatePattern.NORM_DATETIME_MS_PATTERN));
|
||||
Assertions.assertEquals("2020-02-06 01:58:00.111", dateTime.toString(DateFormatPool.NORM_DATETIME_MS_PATTERN));
|
||||
}
|
||||
|
||||
/**
|
||||
@ -532,7 +532,7 @@ public class DateUtilTest {
|
||||
public void parseDateTest() {
|
||||
final String dateStr = "2018-4-10";
|
||||
final Date date = DateUtil.parse(dateStr);
|
||||
final String format = DateUtil.format(date, DatePattern.NORM_DATE_PATTERN);
|
||||
final String format = DateUtil.format(date, DateFormatPool.NORM_DATE_PATTERN);
|
||||
Assertions.assertEquals("2018-04-10", format);
|
||||
}
|
||||
|
||||
@ -645,7 +645,7 @@ public class DateUtilTest {
|
||||
|
||||
dateStr1 = "2018-09-13T13:34:36.999+0800";
|
||||
dt = DateUtil.parse(dateStr1);
|
||||
final SimpleDateFormat simpleDateFormat = new SimpleDateFormat(DatePattern.NORM_DATETIME_MS_PATTERN);
|
||||
final SimpleDateFormat simpleDateFormat = new SimpleDateFormat(DateFormatPool.NORM_DATETIME_MS_PATTERN);
|
||||
simpleDateFormat.setTimeZone(TimeZone.getTimeZone("GMT+8:00"));
|
||||
dateStr = Objects.requireNonNull(dt).toString(simpleDateFormat);
|
||||
Assertions.assertEquals("2018-09-13 13:34:36.999", dateStr);
|
||||
@ -705,7 +705,7 @@ public class DateUtilTest {
|
||||
public void parseCSTTest() {
|
||||
final String dateStr = "Wed Sep 16 11:26:23 +0800 2009";
|
||||
|
||||
final SimpleDateFormat sdf = new SimpleDateFormat(DatePattern.JDK_DATETIME_PATTERN, Locale.US);
|
||||
final SimpleDateFormat sdf = new SimpleDateFormat(DateFormatPool.JDK_DATETIME_PATTERN, Locale.US);
|
||||
// Asia/Shanghai是以地区命名的地区标准时,在中国叫CST,因此如果解析CST时不使用"Asia/Shanghai"而使用"GMT+08:00",会导致相差一个小时
|
||||
sdf.setTimeZone(TimeZone.getTimeZone("Asia/Shanghai"));
|
||||
final DateTime parse = DateUtil.parse(dateStr, sdf);
|
||||
@ -719,11 +719,11 @@ public class DateUtilTest {
|
||||
public void parseCSTTest2() {
|
||||
final String dateStr = "Wed Sep 16 11:26:23 CST 2009";
|
||||
|
||||
final SimpleDateFormat sdf = new SimpleDateFormat(DatePattern.JDK_DATETIME_PATTERN, Locale.US);
|
||||
final SimpleDateFormat sdf = new SimpleDateFormat(DateFormatPool.JDK_DATETIME_PATTERN, Locale.US);
|
||||
sdf.setTimeZone(TimeZone.getTimeZone("America/Chicago"));
|
||||
final DateTime parse = DateUtil.parse(dateStr, sdf);
|
||||
|
||||
final FastDateFormat fdf = FastDateFormat.getInstance(DatePattern.JDK_DATETIME_PATTERN, TimeZone.getTimeZone("America/Chicago"), Locale.US);
|
||||
final FastDateFormat fdf = FastDateFormat.getInstance(DateFormatPool.JDK_DATETIME_PATTERN, TimeZone.getTimeZone("America/Chicago"), Locale.US);
|
||||
final DateTime parse2 = DateUtil.parse(dateStr, fdf);
|
||||
|
||||
Assertions.assertEquals(parse, parse2);
|
||||
@ -788,14 +788,14 @@ public class DateUtilTest {
|
||||
final Date date2 = DateUtil.parse("2021-04-13 23:59:10");
|
||||
|
||||
Assertions.assertEquals(1, DateUtil.compare(date1, date2));
|
||||
Assertions.assertEquals(1, DateUtil.compare(date1, date2, DatePattern.NORM_DATETIME_PATTERN));
|
||||
Assertions.assertEquals(0, DateUtil.compare(date1, date2, DatePattern.NORM_DATE_PATTERN));
|
||||
Assertions.assertEquals(0, DateUtil.compare(date1, date2, DatePattern.NORM_DATETIME_MINUTE_PATTERN));
|
||||
Assertions.assertEquals(1, DateUtil.compare(date1, date2, DateFormatPool.NORM_DATETIME_PATTERN));
|
||||
Assertions.assertEquals(0, DateUtil.compare(date1, date2, DateFormatPool.NORM_DATE_PATTERN));
|
||||
Assertions.assertEquals(0, DateUtil.compare(date1, date2, DateFormatPool.NORM_DATETIME_MINUTE_PATTERN));
|
||||
|
||||
|
||||
final Date date11 = DateUtil.parse("2021-04-13 23:59:59.999");
|
||||
final Date date22 = DateUtil.parse("2021-04-11 23:10:10");
|
||||
Assertions.assertEquals(0, DateUtil.compare(date11, date22, DatePattern.NORM_MONTH_PATTERN));
|
||||
Assertions.assertEquals(0, DateUtil.compare(date11, date22, DateFormatPool.NORM_MONTH_PATTERN));
|
||||
}
|
||||
|
||||
@Test
|
||||
@ -830,7 +830,7 @@ public class DateUtilTest {
|
||||
final LocalDate localDate = localDateTime.toLocalDate();
|
||||
final DateTime date2 = DateUtil.date(localDate);
|
||||
Assertions.assertEquals("2017-05-06",
|
||||
DateUtil.format(date2, DatePattern.NORM_DATE_PATTERN));
|
||||
DateUtil.format(date2, DateFormatPool.NORM_DATE_PATTERN));
|
||||
}
|
||||
|
||||
@Test
|
||||
@ -890,8 +890,8 @@ public class DateUtilTest {
|
||||
Assertions.assertEquals(strDate, strDate1);
|
||||
|
||||
final String strDate2 = "2019-12-01 17:02:30.111";
|
||||
ldt = TimeUtil.parse(strDate2, DatePattern.NORM_DATETIME_MS_PATTERN);
|
||||
strDate1 = DateUtil.format(ldt, DatePattern.NORM_DATETIME_PATTERN);
|
||||
ldt = TimeUtil.parse(strDate2, DateFormatPool.NORM_DATETIME_MS_PATTERN);
|
||||
strDate1 = DateUtil.format(ldt, DateFormatPool.NORM_DATETIME_PATTERN);
|
||||
Assertions.assertEquals(strDate, strDate1);
|
||||
}
|
||||
|
||||
@ -900,7 +900,7 @@ public class DateUtilTest {
|
||||
// 测试字符串与LocalDateTime的互相转换
|
||||
final String strDate = "2019-12-01";
|
||||
final LocalDateTime localDateTime = TimeUtil.parse(strDate, "yyyy-MM-dd");
|
||||
Assertions.assertEquals(strDate, DateUtil.format(localDateTime, DatePattern.NORM_DATE_PATTERN));
|
||||
Assertions.assertEquals(strDate, DateUtil.format(localDateTime, DateFormatPool.NORM_DATE_PATTERN));
|
||||
}
|
||||
|
||||
@Test
|
||||
@ -975,7 +975,7 @@ public class DateUtilTest {
|
||||
Assertions.assertThrows(DateException.class, ()->{
|
||||
//https://github.com/dromara/hutool/issues/1332
|
||||
// 在日期格式不匹配的时候,测试是否正常报错
|
||||
DateUtil.parse("2020-12-23", DatePattern.PURE_DATE_PATTERN);
|
||||
DateUtil.parse("2020-12-23", DateFormatPool.PURE_DATE_PATTERN);
|
||||
});
|
||||
}
|
||||
|
||||
@ -985,14 +985,14 @@ public class DateUtilTest {
|
||||
calendar.set(2021, Calendar.JULY, 14, 23, 59, 59);
|
||||
final Date date = new DateTime(calendar);
|
||||
|
||||
Assertions.assertEquals("2021-07-14 23:59:59", DateUtil.format(date, DatePattern.NORM_DATETIME_FORMATTER));
|
||||
Assertions.assertEquals("2021-07-14 23:59:59", DateUtil.format(date, DatePattern.NORM_DATETIME_FORMAT));
|
||||
Assertions.assertEquals("2021-07-14 23:59:59", DateUtil.format(date, DatePattern.NORM_DATETIME_PATTERN));
|
||||
Assertions.assertEquals("2021-07-14 23:59:59", DateUtil.format(date, DateFormatPool.NORM_DATETIME_FORMATTER));
|
||||
Assertions.assertEquals("2021-07-14 23:59:59", DateUtil.format(date, DateFormatPool.NORM_DATETIME_FORMAT));
|
||||
Assertions.assertEquals("2021-07-14 23:59:59", DateUtil.format(date, DateFormatPool.NORM_DATETIME_PATTERN));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void formatNormDateTimeFormatterTest() {
|
||||
String format = DateUtil.format(DateUtil.parse("2021-07-14 10:05:38"), DatePattern.NORM_DATETIME_FORMATTER);
|
||||
String format = DateUtil.format(DateUtil.parse("2021-07-14 10:05:38"), DateFormatPool.NORM_DATETIME_FORMATTER);
|
||||
Assertions.assertEquals("2021-07-14 10:05:38", format);
|
||||
|
||||
format = DateUtil.format(TimeUtil.parseByISO("2021-07-14T10:05:38"),
|
||||
@ -1024,7 +1024,7 @@ public class DateUtilTest {
|
||||
|
||||
@Test
|
||||
public void parseByDateTimeFormatterTest() {
|
||||
final DateTime parse = DateUtil.parse("2021-12-01", DatePattern.NORM_DATE_FORMATTER);
|
||||
final DateTime parse = DateUtil.parse("2021-12-01", DateFormatPool.NORM_DATE_FORMATTER);
|
||||
Assertions.assertEquals("2021-12-01 00:00:00", parse.toString());
|
||||
}
|
||||
|
||||
|
@ -26,14 +26,14 @@ public class TemporalAccessorUtilTest {
|
||||
|
||||
@Test
|
||||
public void formatLocalDateTest(){
|
||||
final String format = TemporalAccessorUtil.format(LocalDate.of(2020, 12, 7), DatePattern.NORM_DATETIME_PATTERN);
|
||||
final String format = TemporalAccessorUtil.format(LocalDate.of(2020, 12, 7), DateFormatPool.NORM_DATETIME_PATTERN);
|
||||
Assertions.assertEquals("2020-12-07 00:00:00", format);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void formatLocalTimeTest(){
|
||||
final String today = TemporalAccessorUtil.format(LocalDate.now(), DatePattern.NORM_DATE_PATTERN);
|
||||
final String format = TemporalAccessorUtil.format(LocalTime.MIN, DatePattern.NORM_DATETIME_PATTERN);
|
||||
final String today = TemporalAccessorUtil.format(LocalDate.now(), DateFormatPool.NORM_DATE_PATTERN);
|
||||
final String format = TemporalAccessorUtil.format(LocalTime.MIN, DateFormatPool.NORM_DATETIME_PATTERN);
|
||||
Assertions.assertEquals(today + " 00:00:00", format);
|
||||
}
|
||||
|
||||
@ -54,9 +54,9 @@ public class TemporalAccessorUtilTest {
|
||||
final String startTimeStr = "2022-04-19 00:00:00";
|
||||
final String endTimeStr = "2022-04-19 23:59:59";
|
||||
final boolean between = TimeUtil.isIn(
|
||||
TimeUtil.parse(sourceStr, DatePattern.NORM_DATETIME_FORMATTER),
|
||||
TimeUtil.parse(startTimeStr, DatePattern.NORM_DATETIME_FORMATTER),
|
||||
TimeUtil.parse(endTimeStr, DatePattern.NORM_DATETIME_FORMATTER));
|
||||
TimeUtil.parse(sourceStr, DateFormatPool.NORM_DATETIME_FORMATTER),
|
||||
TimeUtil.parse(startTimeStr, DateFormatPool.NORM_DATETIME_FORMATTER),
|
||||
TimeUtil.parse(endTimeStr, DateFormatPool.NORM_DATETIME_FORMATTER));
|
||||
Assertions.assertTrue(between);
|
||||
}
|
||||
}
|
||||
|
@ -75,13 +75,13 @@ public class TimeUtilTest {
|
||||
|
||||
@Test
|
||||
public void parseTest2() {
|
||||
final LocalDateTime localDateTime = TimeUtil.parse("2020-01-23", DatePattern.NORM_DATE_PATTERN);
|
||||
final LocalDateTime localDateTime = TimeUtil.parse("2020-01-23", DateFormatPool.NORM_DATE_PATTERN);
|
||||
assertEquals("2020-01-23T00:00", Objects.requireNonNull(localDateTime).toString());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void parseTest3() {
|
||||
final LocalDateTime localDateTime = TimeUtil.parse("12:23:56", DatePattern.NORM_TIME_PATTERN);
|
||||
final LocalDateTime localDateTime = TimeUtil.parse("12:23:56", DateFormatPool.NORM_TIME_PATTERN);
|
||||
assertEquals("12:23:56", Objects.requireNonNull(localDateTime).toLocalTime().toString());
|
||||
}
|
||||
|
||||
@ -127,20 +127,20 @@ public class TimeUtilTest {
|
||||
@Test
|
||||
public void formatTest() {
|
||||
final LocalDateTime localDateTime = TimeUtil.parseByISO("2020-01-23T12:23:56");
|
||||
String format = TimeUtil.format(localDateTime, DatePattern.NORM_DATETIME_PATTERN);
|
||||
String format = TimeUtil.format(localDateTime, DateFormatPool.NORM_DATETIME_PATTERN);
|
||||
assertEquals("2020-01-23 12:23:56", format);
|
||||
|
||||
format = TimeUtil.formatNormal(localDateTime);
|
||||
assertEquals("2020-01-23 12:23:56", format);
|
||||
|
||||
format = TimeUtil.format(localDateTime, DatePattern.NORM_DATE_PATTERN);
|
||||
format = TimeUtil.format(localDateTime, DateFormatPool.NORM_DATE_PATTERN);
|
||||
assertEquals("2020-01-23", format);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void formatLocalDateTest() {
|
||||
final LocalDate date = LocalDate.parse("2020-01-23");
|
||||
String format = TimeUtil.format(date, DatePattern.NORM_DATE_PATTERN);
|
||||
String format = TimeUtil.format(date, DateFormatPool.NORM_DATE_PATTERN);
|
||||
assertEquals("2020-01-23", format);
|
||||
|
||||
format = TimeUtil.formatNormal(date);
|
||||
@ -354,7 +354,7 @@ public class TimeUtilTest {
|
||||
public void formatDateFunctionTest() {
|
||||
final List<String> dateStrList = Stream.of("2023-03-01", "2023-03-02")
|
||||
.map(LocalDate::parse)
|
||||
.map(TimeUtil.formatFunc(DatePattern.CHINESE_DATE_FORMATTER))
|
||||
.map(TimeUtil.formatFunc(DateFormatPool.CHINESE_DATE_FORMATTER))
|
||||
.collect(Collectors.toList());
|
||||
assertEquals("2023年03月01日", dateStrList.get(0));
|
||||
assertEquals("2023年03月02日", dateStrList.get(1));
|
||||
@ -364,7 +364,7 @@ public class TimeUtilTest {
|
||||
public void formatTimeFunctionTest() {
|
||||
final List<String> dateStrList = Stream.of("2023-03-01T12:23:56", "2023-03-02T12:23:56")
|
||||
.map(LocalDateTime::parse)
|
||||
.map(TimeUtil.formatFunc(DatePattern.CHINESE_DATE_FORMATTER))
|
||||
.map(TimeUtil.formatFunc(DateFormatPool.CHINESE_DATE_FORMATTER))
|
||||
.collect(Collectors.toList());
|
||||
assertEquals("2023年03月01日", dateStrList.get(0));
|
||||
assertEquals("2023年03月02日", dateStrList.get(1));
|
||||
|
@ -27,7 +27,7 @@ public class TimeZoneTest {
|
||||
@Test
|
||||
public void timeZoneConvertTest() {
|
||||
final DateTime dt = DateUtil.parse("2018-07-10 21:44:32", //
|
||||
FastDateFormat.getInstance(DatePattern.NORM_DATETIME_PATTERN, TimeZone.getTimeZone("GMT+8:00")));
|
||||
FastDateFormat.getInstance(DateFormatPool.NORM_DATETIME_PATTERN, TimeZone.getTimeZone("GMT+8:00")));
|
||||
Assertions.assertEquals("2018-07-10 21:44:32", dt.toString());
|
||||
|
||||
dt.setTimeZone(TimeZone.getTimeZone("Europe/London"));
|
||||
|
@ -16,7 +16,7 @@
|
||||
|
||||
package org.dromara.hutool.core.text;
|
||||
|
||||
import org.dromara.hutool.core.date.DatePattern;
|
||||
import org.dromara.hutool.core.date.DateFormatPool;
|
||||
import org.dromara.hutool.core.date.DateUtil;
|
||||
import org.dromara.hutool.core.util.CharsetUtil;
|
||||
import org.junit.jupiter.api.Assertions;
|
||||
@ -203,12 +203,12 @@ public class CharSequenceUtilTest {
|
||||
public void defaultIfEmptyTest() {
|
||||
final String emptyValue = "";
|
||||
final Instant result1 = CharSequenceUtil.defaultIfEmpty(emptyValue,
|
||||
(v) -> DateUtil.parse(v, DatePattern.NORM_DATETIME_PATTERN).toInstant(), Instant::now);
|
||||
(v) -> DateUtil.parse(v, DateFormatPool.NORM_DATETIME_PATTERN).toInstant(), Instant::now);
|
||||
Assertions.assertNotNull(result1);
|
||||
|
||||
final String dateStr = "2020-10-23 15:12:30";
|
||||
final Instant result2 = CharSequenceUtil.defaultIfEmpty(dateStr,
|
||||
(v) -> DateUtil.parse(v, DatePattern.NORM_DATETIME_PATTERN).toInstant(), Instant::now);
|
||||
(v) -> DateUtil.parse(v, DateFormatPool.NORM_DATETIME_PATTERN).toInstant(), Instant::now);
|
||||
Assertions.assertNotNull(result2);
|
||||
}
|
||||
|
||||
@ -216,12 +216,12 @@ public class CharSequenceUtilTest {
|
||||
public void defaultIfBlankTest() {
|
||||
final String emptyValue = " ";
|
||||
final Instant result1 = CharSequenceUtil.defaultIfBlank(emptyValue,
|
||||
(v) -> DateUtil.parse(v, DatePattern.NORM_DATETIME_PATTERN).toInstant(), Instant::now);
|
||||
(v) -> DateUtil.parse(v, DateFormatPool.NORM_DATETIME_PATTERN).toInstant(), Instant::now);
|
||||
Assertions.assertNotNull(result1);
|
||||
|
||||
final String dateStr = "2020-10-23 15:12:30";
|
||||
final Instant result2 = CharSequenceUtil.defaultIfBlank(dateStr,
|
||||
(v) -> DateUtil.parse(v, DatePattern.NORM_DATETIME_PATTERN).toInstant(), Instant::now);
|
||||
(v) -> DateUtil.parse(v, DateFormatPool.NORM_DATETIME_PATTERN).toInstant(), Instant::now);
|
||||
Assertions.assertNotNull(result2);
|
||||
}
|
||||
|
||||
|
@ -20,7 +20,7 @@ import lombok.Data;
|
||||
import org.dromara.hutool.core.annotation.Alias;
|
||||
import org.dromara.hutool.core.annotation.PropIgnore;
|
||||
import org.dromara.hutool.core.collection.ListUtil;
|
||||
import org.dromara.hutool.core.date.DatePattern;
|
||||
import org.dromara.hutool.core.date.DateFormatPool;
|
||||
import org.dromara.hutool.core.date.DateUtil;
|
||||
import org.dromara.hutool.core.date.format.GlobalCustomFormat;
|
||||
import org.dromara.hutool.core.io.resource.ResourceUtil;
|
||||
@ -74,7 +74,7 @@ public class JSONObjectTest {
|
||||
*/
|
||||
@Test
|
||||
public void toStringTest3() {
|
||||
final JSONObject json = JSONUtil.ofObj(JSONConfig.of().setDateFormat(DatePattern.NORM_DATE_PATTERN))//
|
||||
final JSONObject json = JSONUtil.ofObj(JSONConfig.of().setDateFormat(DateFormatPool.NORM_DATE_PATTERN))//
|
||||
.putValue("dateTime", DateUtil.parse("2019-05-02 22:12:01"));
|
||||
assertEquals("{\"dateTime\":\"2019-05-02\"}", json.toString());
|
||||
}
|
||||
@ -85,7 +85,7 @@ public class JSONObjectTest {
|
||||
assert json != null;
|
||||
assertEquals("{\"date\":1557314301000}", json.toString());
|
||||
|
||||
json = JSONUtil.ofObj(JSONConfig.of().setDateFormat(DatePattern.NORM_DATE_PATTERN))
|
||||
json = JSONUtil.ofObj(JSONConfig.of().setDateFormat(DateFormatPool.NORM_DATE_PATTERN))
|
||||
.putValue("date", DateUtil.parse("2019-05-08 19:18:21"));
|
||||
assertEquals("{\"date\":\"2019-05-08\"}", json.toString());
|
||||
}
|
||||
|
@ -17,7 +17,7 @@
|
||||
package org.dromara.hutool.json.jwt;
|
||||
|
||||
import lombok.Data;
|
||||
import org.dromara.hutool.core.date.DatePattern;
|
||||
import org.dromara.hutool.core.date.DateFormatPool;
|
||||
import org.dromara.hutool.core.date.DateUtil;
|
||||
import org.dromara.hutool.core.reflect.TypeReference;
|
||||
import org.dromara.hutool.core.util.ByteUtil;
|
||||
@ -179,7 +179,7 @@ public class JWTTest {
|
||||
|
||||
// 签发时间早于被检查的时间
|
||||
final Date date = JWT.of(token).getPayload().getClaimsJson().getDate(JWTPayload.ISSUED_AT);
|
||||
Assertions.assertEquals("2022-02-02", DateUtil.format(date, DatePattern.NORM_DATE_PATTERN));
|
||||
Assertions.assertEquals("2022-02-02", DateUtil.format(date, DateFormatPool.NORM_DATE_PATTERN));
|
||||
}
|
||||
|
||||
@Test
|
||||
|
Loading…
x
Reference in New Issue
Block a user