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;
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.date.format.GlobalCustomFormat;
import org.dromara.hutool.core.date.format.parser.DateParser;
@ -577,6 +578,20 @@ public class CalendarUtil {
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}对象
*
@ -596,6 +611,9 @@ public class CalendarUtil {
* @since 5.0.5
*/
public static LocalDateTime toLocalDateTime(final Calendar calendar) {
if(null == calendar){
return null;
}
return LocalDateTime.ofInstant(calendar.toInstant(), calendar.getTimeZone().toZoneId());
}

View File

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

View File

@ -59,9 +59,9 @@ class PatternUtil {
final int minute = calendar.get(Calendar.MINUTE);
final int hour = calendar.get(Calendar.HOUR_OF_DAY);
final int dayOfMonth = calendar.get(Calendar.DAY_OF_MONTH);
final int month = calendar.get(Calendar.MONTH) + 1;// 月份从1开始
final int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK) - 1; // 星期从0开始0和7都表示周日
final int monthBase1 = calendar.get(Calendar.MONTH) + 1;// 月份从1开始
final int dayOfWeekBase0 = calendar.get(Calendar.DAY_OF_WEEK) - 1; // 星期从0开始0和7都表示周日
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.DateUtil;
import org.dromara.hutool.core.lang.Console;
import org.junit.jupiter.api.Test;
import java.util.Calendar;
@ -28,6 +29,6 @@ public class IssueI92H5HTest {
final CronPattern pattern = new CronPattern("0 0 0 L 2 ?");
//noinspection ConstantConditions
final Calendar calendar = pattern.nextMatchAfter(date.toCalendar());
System.out.println(DateUtil.date(calendar));
Console.log(DateUtil.date(calendar));
}
}