add methods

This commit is contained in:
Looly 2024-04-21 20:35:36 +08:00
parent 8d750b0017
commit f5202f36b8
4 changed files with 60 additions and 37 deletions

View File

@ -13,6 +13,7 @@
package org.dromara.hutool.core.date; package org.dromara.hutool.core.date;
import org.dromara.hutool.core.comparator.CompareUtil; import org.dromara.hutool.core.comparator.CompareUtil;
import org.dromara.hutool.core.lang.Assert;
import org.dromara.hutool.core.math.ChineseNumberFormatter; import org.dromara.hutool.core.math.ChineseNumberFormatter;
import org.dromara.hutool.core.date.format.GlobalCustomFormat; import org.dromara.hutool.core.date.format.GlobalCustomFormat;
import org.dromara.hutool.core.date.format.parser.DateParser; import org.dromara.hutool.core.date.format.parser.DateParser;
@ -577,6 +578,20 @@ public class CalendarUtil {
return calendar.getActualMaximum(dateField); return calendar.getActualMaximum(dateField);
} }
/**
* 获得日期的某个部分<br>
* 例如获得年的部分则使用 getField(DatePart.YEAR)
*
* @param calendar {@link Calendar}
* @param field 表示日期的哪个部分的枚举 {@link DateField}
* @return 某个部分的值
* @since 6.0.0
*/
@SuppressWarnings("MagicConstant")
public static int getField(final Calendar calendar, final DateField field) {
return Assert.notNull(calendar).get(Assert.notNull(field).getValue());
}
/** /**
* Calendar{@link Instant}对象 * Calendar{@link Instant}对象
* *
@ -596,6 +611,9 @@ public class CalendarUtil {
* @since 5.0.5 * @since 5.0.5
*/ */
public static LocalDateTime toLocalDateTime(final Calendar calendar) { public static LocalDateTime toLocalDateTime(final Calendar calendar) {
if(null == calendar){
return null;
}
return LocalDateTime.ofInstant(calendar.toInstant(), calendar.getTimeZone().toZoneId()); return LocalDateTime.ofInstant(calendar.toInstant(), calendar.getTimeZone().toZoneId());
} }

View File

@ -19,7 +19,6 @@ import java.util.Calendar;
* 与Calendar相应值对应 * 与Calendar相应值对应
* *
* @author Looly * @author Looly
*
*/ */
public enum DateField { public enum DateField {
@ -121,6 +120,11 @@ public enum DateField {
this.value = value; this.value = value;
} }
/**
* 获取{@link Calendar}中对应的值
*
* @return {@link Calendar}中对应的值
*/
public int getValue() { public int getValue() {
return this.value; return this.value;
} }
@ -133,38 +137,38 @@ public enum DateField {
*/ */
public static DateField of(final int calendarPartIntValue) { public static DateField of(final int calendarPartIntValue) {
switch (calendarPartIntValue) { switch (calendarPartIntValue) {
case Calendar.ERA: case Calendar.ERA:
return ERA; return ERA;
case Calendar.YEAR: case Calendar.YEAR:
return YEAR; return YEAR;
case Calendar.MONTH: case Calendar.MONTH:
return MONTH; return MONTH;
case Calendar.WEEK_OF_YEAR: case Calendar.WEEK_OF_YEAR:
return WEEK_OF_YEAR; return WEEK_OF_YEAR;
case Calendar.WEEK_OF_MONTH: case Calendar.WEEK_OF_MONTH:
return WEEK_OF_MONTH; return WEEK_OF_MONTH;
case Calendar.DAY_OF_MONTH: case Calendar.DAY_OF_MONTH:
return DAY_OF_MONTH; return DAY_OF_MONTH;
case Calendar.DAY_OF_YEAR: case Calendar.DAY_OF_YEAR:
return DAY_OF_YEAR; return DAY_OF_YEAR;
case Calendar.DAY_OF_WEEK: case Calendar.DAY_OF_WEEK:
return DAY_OF_WEEK; return DAY_OF_WEEK;
case Calendar.DAY_OF_WEEK_IN_MONTH: case Calendar.DAY_OF_WEEK_IN_MONTH:
return DAY_OF_WEEK_IN_MONTH; return DAY_OF_WEEK_IN_MONTH;
case Calendar.AM_PM: case Calendar.AM_PM:
return AM_PM; return AM_PM;
case Calendar.HOUR: case Calendar.HOUR:
return HOUR; return HOUR;
case Calendar.HOUR_OF_DAY: case Calendar.HOUR_OF_DAY:
return HOUR_OF_DAY; return HOUR_OF_DAY;
case Calendar.MINUTE: case Calendar.MINUTE:
return MINUTE; return MINUTE;
case Calendar.SECOND: case Calendar.SECOND:
return SECOND; return SECOND;
case Calendar.MILLISECOND: case Calendar.MILLISECOND:
return MILLISECOND; return MILLISECOND;
default: default:
return null; return null;
} }
} }
} }

View File

@ -59,9 +59,9 @@ class PatternUtil {
final int minute = calendar.get(Calendar.MINUTE); final int minute = calendar.get(Calendar.MINUTE);
final int hour = calendar.get(Calendar.HOUR_OF_DAY); final int hour = calendar.get(Calendar.HOUR_OF_DAY);
final int dayOfMonth = calendar.get(Calendar.DAY_OF_MONTH); final int dayOfMonth = calendar.get(Calendar.DAY_OF_MONTH);
final int month = calendar.get(Calendar.MONTH) + 1;// 月份从1开始 final int monthBase1 = calendar.get(Calendar.MONTH) + 1;// 月份从1开始
final int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK) - 1; // 星期从0开始0和7都表示周日 final int dayOfWeekBase0 = calendar.get(Calendar.DAY_OF_WEEK) - 1; // 星期从0开始0和7都表示周日
final int year = calendar.get(Calendar.YEAR); final int year = calendar.get(Calendar.YEAR);
return new int[]{second, minute, hour, dayOfMonth, month, dayOfWeek, year}; return new int[]{second, minute, hour, dayOfMonth, monthBase1, dayOfWeekBase0, year};
} }
} }

View File

@ -14,6 +14,7 @@ package org.dromara.hutool.cron.pattern;
import org.dromara.hutool.core.date.DateTime; import org.dromara.hutool.core.date.DateTime;
import org.dromara.hutool.core.date.DateUtil; import org.dromara.hutool.core.date.DateUtil;
import org.dromara.hutool.core.lang.Console;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
import java.util.Calendar; import java.util.Calendar;
@ -28,6 +29,6 @@ public class IssueI92H5HTest {
final CronPattern pattern = new CronPattern("0 0 0 L 2 ?"); final CronPattern pattern = new CronPattern("0 0 0 L 2 ?");
//noinspection ConstantConditions //noinspection ConstantConditions
final Calendar calendar = pattern.nextMatchAfter(date.toCalendar()); final Calendar calendar = pattern.nextMatchAfter(date.toCalendar());
System.out.println(DateUtil.date(calendar)); Console.log(DateUtil.date(calendar));
} }
} }