Анализ исходного кода 3hutool: DateUtil (класс инструмента времени) - получить различное содержимое даты

Java задняя часть
Анализ исходного кода 3hutool: DateUtil (класс инструмента времени) - получить различное содержимое даты

Это 8-й день моего участия в ноябрьском испытании обновлений.Подробности о событии:Вызов последнего обновления 2021 г."

❤️ Об авторе: Всем привет, я Сяо Сючжу. Высококачественные создатели в области Java 🏆, сертификация эксперта блога CSDN 🏆, сертификация эксперта по совместному использованию облачных сервисов Huawei 🏆

❤️Техническая работа, она должна быть вознаграждена

❤️Нравится 👍 В избранное ⭐Посмотрите еще раз и сформируйте привычку

Перед чтением этой статьи рекомендуется иметь определенное представление о дате и времени исходного кода Java.Если вы этого не знаете, вы можете сначала прочитать эту статью:

Блог из десяти тысяч слов научит вас понимать дату и время использования исходного кода Java.

Статьи по Теме:

каталог реальных боевых действий hutool (позволит вам освоить различные инструменты внутри)

3hutool Combat: DateUtil - получить различное содержимое даты


Цель анализа исходного кода

знай это, знай это

Ссылка на проект

Основа этого сообщения в блоге: исходный код версии hutool-5.6.5.

        <dependency>
			<groupId>cn.hutool</groupId>
			<artifactId>hutool-core</artifactId>
			<version>5.6.5</version>
		</dependency>

Имя метода: DateUtil.year(java.util.Date)

Описание метода

получить часть года

Анализ исходного кода один

	/**
	 * 获得年的部分
	 *
	 * @param date 日期
	 * @return 年的部分
	 */
	public static int year(Date date) {
		return DateTime.of(date).year();
	}

Исходный код **DateTime.of(date).year()** можно разобрать на две части.

  • DateTime.of(date)
  • DateTime.year()

Первая часть, которую легко понять, взглянув на код, — это преобразование типов.

/**
	 * 转换JDK date为 DateTime
	 *
	 * @param date JDK Date
	 * @return DateTime
	 */
	public static DateTime of(Date date) {
		if (date instanceof DateTime) {
			return (DateTime) date;
		}
		return new DateTime(date);
	}

Вторая часть,

/**
 * 获得年的部分
 *
 * @return 年的部分
 */
public int year() {
   return getField(DateField.YEAR);
}

/**
	 * 获得日期的某个部分<br>
	 * 例如获得年的部分,则使用 getField(DatePart.YEAR)
	 *
	 * @param field 表示日期的哪个部分的枚举 {@link DateField}
	 * @return 某个部分的值
	 */
	public int getField(DateField field) {
		return getField(field.getValue());
	}

/**
	 * 获得日期的某个部分<br>
	 * 例如获得年的部分,则使用 getField(Calendar.YEAR)
	 *
	 * @param field 表示日期的哪个部分的int值 {@link Calendar}
	 * @return 某个部分的值
	 */
	public int getField(int field) {
		return toCalendar().get(field);
	}

Следуя по коду, вы можете обнаружить, что вы перейдете кtoCalendar().get(field)

/**
 * 转换为Calendar, 默认 {@link Locale}
 *
 * @return {@link Calendar}
 */
public Calendar toCalendar() {
   return toCalendar(Locale.getDefault(Locale.Category.FORMAT));
}

**toCalendar()** получит Календарь, который легко понять и может получить год.

Вы можете получить не только год, но и год, месяц, день, час, минуту и ​​секунду. Подробности можно найти здесь:Блог из десяти тысяч слов научит вас понимать дату и время использования исходного кода Java.

Имя метода: DateUtil.quarter(java.util.Date)

Описание метода

Получает квартал, к которому относится указанная дата, считая от 1

Анализ исходного кода один

/**
 * 获得指定日期所属季度,从1开始计数
 *
 * @param date 日期
 * @return 第几个季度
 * @since 4.1.0
 */
public static int quarter(Date date) {
   return DateTime.of(date).quarter();
}

Исходный код **DateTime.of(date).quarter()** можно разобрать на две части.

  • DateTime.of(date)
  • DateTime.quarter()

DateTime.of(date)Оно было введено выше, и здесь нет слова «вода».

Вторая часть, month(), получает месяц, соответствующий DateTime, а затем выполняет простой расчет.

/**
 * 获得当前日期所属季度,从1开始计数<br>
 *
 * @return 第几个季度 {@link Quarter}
 */
public int quarter() {
   return month() / 3 + 1;
}

/**
	 * 获得月份,从0开始计数
	 *
	 * @return 月份
	 */
	public int month() {
		return getField(DateField.MONTH);
	}
/**
	 * 获得日期的某个部分<br>
	 * 例如获得年的部分,则使用 getField(DatePart.YEAR)
	 *
	 * @param field 表示日期的哪个部分的枚举 {@link DateField}
	 * @return 某个部分的值
	 */
	public int getField(DateField field) {
		return getField(field.getValue());
	}

getFieldМетод был представлен выше, и здесь нет слова «вода».

Имя метода: DateUtil.quarterEnum(java.util.Date)

Описание метода

Получить квартал, к которому относится указанная дата, и вернуть объект перечисления кварталов Quarter

Анализ исходного кода один

/**
 * 获得指定日期所属季度
 *
 * @param date 日期
 * @return 第几个季度枚举
 * @since 4.1.0
 */
public static Quarter quarterEnum(Date date) {
   return DateTime.of(date).quarterEnum();
}

Исходный код **DateTime.of(date).quarterEnum()** можно разобрать на две части.

  • DateTime.of(date)
  • DateTime.quarterEnum()

DateTime.of(date)Оно было введено выше, и здесь нет слова «вода».

Вторая часть,quarter()Выше есть анализ исходного кода, и вывод состоит в том, чтобы получитьПолучить квартал, к которому относится текущая дата, считая от 1

**Quarter.of(int)** предназначен для преобразования соответствующего значения в соответствующее перечисление Quarter.

/**
 * 获得当前日期所属季度<br>
 *
 * @return 第几个季度 {@link Quarter}
 */
public Quarter quarterEnum() {
   return Quarter.of(quarter());
}

Имя метода: DateUtil.month(java.util.Date)

Описание метода

Получить месяц, считая от 0

Анализ исходного кода один

/**
 * 获得月份,从0开始计数
 *
 * @param date 日期
 * @return 月份,从0开始计数
 */
public static int month(Date date) {
   return DateTime.of(date).month();
}

**DateTime.of(date).month()** исходного кода можно разобрать на две части.

  • DateTime.of(date)
  • DateTime.month()

DateTime.of(date)Оно было введено выше, и здесь нет слова «вода».

Вторая часть,getFieldМетод был представлен выше, и здесь нет слова «вода».

/**
 * 获得月份,从0开始计数
 *
 * @return 月份
 */
public int month() {
   return getField(DateField.MONTH);
}

Имя метода: DateUtil.monthEnum(java.util.Date)

Описание метода

Получить месяц, вернуть объект перечисления месяца Month

Анализ исходного кода один

/**
 * 获得月份
 *
 * @param date 日期
 * @return {@link Month}
 */
public static Month monthEnum(Date date) {
   return DateTime.of(date).monthEnum();
}

Исходный код **DateTime.of(date).monthEnum()** можно разобрать на две части.

  • DateTime.of(date)
  • DateTime.monthEnum()

DateTime.of(date)Оно было введено выше, и здесь нет слова «вода».

Вторая часть,month()это получить месяц, считая от 0

**Month.of(int)** предназначен для преобразования соответствующего значения в соответствующий месяц перечисления.

/**
 * 获得月份
 *
 * @return {@link Month}
 */
public Month monthEnum() {
   return Month.of(month());
}

Имя метода: DateUtil.weekOfYear(java.util.Date)

Описание метода

Получить неделю года, в которой находится указанная дата
Возвращаемое значение этого метода относится к первому дню недели, например:
3 января 2016 года – воскресенье. Если первый день недели – воскресенье, то этот день – вторая неделя (возврат 2).
Если первый день недели — понедельник, то этот день — первая неделя (возврат 1)
Результат за неделю в канун Нового года всегда 1

Анализ исходного кода один

/**
 * 获得指定日期是所在年份的第几周<br>
 * 此方法返回值与一周的第一天有关,比如:<br>
 * 2016年1月3日为周日,如果一周的第一天为周日,那这天是第二周(返回2)<br>
 * 如果一周的第一天为周一,那这天是第一周(返回1)<br>
 * 跨年的那个星期得到的结果总是1
 *
 * @param date 日期
 * @return 周
 * @see DateTime#setFirstDayOfWeek(Week)
 */
public static int weekOfYear(Date date) {
   return DateTime.of(date).weekOfYear();
}

Исходный код **DateTime.of(date).weekOfYear()** можно разобрать на две части.

  • DateTime.of(date)
  • DateTime.weekOfYear()

DateTime.of(date)Оно было введено выше, и здесь нет слова «вода».

Вторая часть,getFieldМетод был представлен выше, и здесь нет слова «вода».

/**
 * 获得指定日期是所在年份的第几周<br>
 * 此方法返回值与一周的第一天有关,比如:<br>
 * 2016年1月3日为周日,如果一周的第一天为周日,那这天是第二周(返回2)<br>
 * 如果一周的第一天为周一,那这天是第一周(返回1)<br>
 * 跨年的那个星期得到的结果总是1
 *
 * @return 周
 * @see #setFirstDayOfWeek(Week)
 */
public int weekOfYear() {
   return getField(DateField.WEEK_OF_YEAR);
}

Имя метода: DateUtil.weekOfMonth(java.util.Date)

Описание метода

Получить неделю месяца, в котором находится указанная дата

Анализ исходного кода один

/**
 * 获得指定日期是这个日期所在月份的第几天<br>
 *
 * @param date 日期
 * @return 天
 */
public static int dayOfMonth(Date date) {
   return DateTime.of(date).dayOfMonth();
}

Исходный код **DateTime.of(date).year()** можно разобрать на две части.

  • DateTime.of(date)
  • DateTime.monthEnum()

DateTime.of(date)Оно было введено выше, и здесь нет слова «вода».

Вторая часть,getFieldМетод был представлен выше, и здесь нет слова «вода».

/**
 * 获得指定日期是这个日期所在月份的第几天,从1开始
 *
 * @return 天,1表示第一天
 */
public int dayOfMonth() {
   return getField(DateField.DAY_OF_MONTH);
}

Имя метода: DateUtil.dayOfMonth(java.util.Date)

Описание метода

Получить день месяца, в котором находится указанная дата.

Анализ исходного кода один

/**
 * 获得指定日期是这个日期所在月份的第几天<br>
 *
 * @param date 日期
 * @return 天
 */
public static int dayOfMonth(Date date) {
   return DateTime.of(date).dayOfMonth();
}

Исходный код **DateTime.of(date).dayOfMonth()** можно разобрать на две части.

  • DateTime.of(date)
  • DateTime.dayOfMonth()

DateTime.of(date)Оно было введено выше, и здесь нет слова «вода».

Вторая часть,getFieldМетод был представлен выше, и здесь нет слова «вода».

/**
 * 获得指定日期是这个日期所在月份的第几天,从1开始
 *
 * @return 天,1表示第一天
 */
public int dayOfMonth() {
   return getField(DateField.DAY_OF_MONTH);
}

Имя метода: DateUtil.dayOfYear(java.util.Date)

Описание метода

Получить день года, в котором указанная дата

Анализ исходного кода один

/**
 * 获得指定日期是这个日期所在年的第几天
 *
 * @param date 日期
 * @return 天
 * @since 5.3.6
 */
public static int dayOfYear(Date date) {
   return DateTime.of(date).dayOfYear();
}

Исходный код **DateTime.of(date).dayOfYear()** можно разобрать на две части.

  • DateTime.of(date)
  • DateTime.dayOfYear()

DateTime.of(date)Оно было введено выше, и здесь нет слова «вода».

Вторая часть,getFieldМетод был представлен выше, и здесь нет слова «вода».

/**
 * 获得指定日期是这个日期所在年份的第几天,从1开始
 *
 * @return 天,1表示第一天
 * @since 5.3.6
 */
public int dayOfYear() {
   return getField(DateField.DAY_OF_YEAR);
}

Имя метода: DateUtil.dayOfWeek(java.util.Date)

Описание метода

Получить день недели для указанной даты, 1 означает воскресенье, 2 означает понедельник

Анализ исходного кода один

/**
 * 获得指定日期是星期几,1表示周日,2表示周一
 *
 * @param date 日期
 * @return 天
 */
public static int dayOfWeek(Date date) {
   return DateTime.of(date).dayOfWeek();
}

Исходный код **DateTime.of(date).dayOfWeek()** можно разобрать на две части.

  • DateTime.of(date)
  • DateTime.dayOfWeek()

DateTime.of(date)Оно было введено выше, и здесь нет слова «вода».

Вторая часть,getFieldМетод был представлен выше, и здесь нет слова «вода».

/**
 * 获得指定日期是星期几,1表示周日,2表示周一
 *
 * @return 星期几
 */
public int dayOfWeek() {
   return getField(DateField.DAY_OF_WEEK);
}

Имя метода: DateUtil.dayOfWeekEnum(java.util.Date)

Описание метода

Получить день недели для указанной даты

Анализ исходного кода один

/**
 * 获得指定日期是星期几
 *
 * @param date 日期
 * @return {@link Week}
 */
public static Week dayOfWeekEnum(Date date) {
   return DateTime.of(date).dayOfWeekEnum();
}

Исходный код **DateTime.of(date).dayOfWeekEnum()** можно разобрать на две части.

  • DateTime.of(date)
  • DateTime.dayOfWeekEnum()

DateTime.of(date)Оно было введено выше, и здесь нет слова «вода».

Вторая часть,dayOfWeek()Получить день недели для указанной даты, 1 означает воскресенье, 2 означает понедельник

**Week.of(int)** — преобразовать соответствующее значение в соответствующее перечисление Week.

/**
 * 获得指定日期是星期几
 *
 * @return {@link Week}
 */
public Week dayOfWeekEnum() {
   return Week.of(dayOfWeek());
}

Имя метода: DateUtil.hour(java.util.Date, boolean)

Описание метода

Получить часовую часть указанной даты

Анализ исходного кода один

/**
 * 获得指定日期的小时数部分<br>
 *
 * @param date          日期
 * @param is24HourClock 是否24小时制
 * @return 小时数
 */
public static int hour(Date date, boolean is24HourClock) {
   return DateTime.of(date).hour(is24HourClock);
}

Исходный код **DateTime.of(date).hour(is24HourClock)** можно разобрать на две части

  • DateTime.of(date)
  • DateTime.hour(is24HourClock)

DateTime.of(date)Оно было введено выше, и здесь нет слова «вода».

Вторая часть,getFieldМетод был представлен выше, и здесь нет слова «вода».

is24HourClock ? DateField.HOUR_OF_DAY : DateField.HOUR: is24HourClock — 24-часовой формат.

DateField.HOUR_OF_DAY: час, для 24-часового формата

DateField.HOUR: час, для 12-часового формата

/**
 * 获得指定日期的小时数部分<br>
 *
 * @param is24HourClock 是否24小时制
 * @return 小时数
 */
public int hour(boolean is24HourClock) {
   return getField(is24HourClock ? DateField.HOUR_OF_DAY : DateField.HOUR);
}

Имя метода: DateUtil.minute(java.util.Date)

Описание метода

Получить минутную часть указанной даты
Например: 10:04:15.250 => 4

Анализ исходного кода один

/**
 * 获得指定日期的分钟数部分<br>
 * 例如:10:04:15.250 =》 4
 *
 * @param date 日期
 * @return 分钟数
 */
public static int minute(Date date) {
   return DateTime.of(date).minute();
}

Исходный код **DateTime.of(date).minute()** можно разобрать на две части.

  • DateTime.of(date)
  • DateTime.minute()

DateTime.of(date)Оно было введено выше, и здесь нет слова «вода».

Вторая часть,getFieldМетод был представлен выше, и здесь нет слова «вода».

/**
 * 获得指定日期的分钟数部分<br>
 * 例如:10:04:15.250 =》 4
 *
 * @return 分钟数
 */
public int minute() {
   return getField(DateField.MINUTE);
}

Имя метода: DateUtil.second(java.util.Date)

Описание метода

Получить секундную часть указанной даты

Анализ исходного кода один

/**
 * 获得指定日期的秒数部分<br>
 *
 * @param date 日期
 * @return 秒数
 */
public static int second(Date date) {
   return DateTime.of(date).second();
}

**DateTime.of(date).second()** исходного кода можно разобрать на две части.

  • DateTime.of(date)
  • DateTime.second()

DateTime.of(date)Оно было введено выше, и здесь нет слова «вода».

Вторая часть,getFieldМетод был представлен выше, и здесь нет слова «вода».

/**
 * 获得指定日期的秒数部分<br>
 *
 * @return 秒数
 */
public int second() {
   return getField(DateField.SECOND);
}

Имя метода: DateUtil.millisecond(java.util.Date)

Описание метода

Получить миллисекундную часть указанной даты

Анализ исходного кода один

	/**
	 * 获得指定日期的毫秒数部分<br>
	 *
	 * @param date 日期
	 * @return 毫秒数
	 */
	public static int millisecond(Date date) {
		return DateTime.of(date).millisecond();
	}

Исходный код **DateTime.of(date).millisecond()** можно разобрать на две части.

  • DateTime.of(date)
  • DateTime.millisecond()

DateTime.of(date)Оно было введено выше, и здесь нет слова «вода».

Вторая часть,getFieldМетод был представлен выше, и здесь нет слова «вода».

/**
 * 获得指定日期的毫秒数部分<br>
 *
 * @return 毫秒数
 */
public int millisecond() {
   return getField(DateField.MILLISECOND);
}

Имя метода: DateUtil.isAM(java.util.Date)

Описание метода

Это утро

Анализ исходного кода один

/**
 * 是否为上午
 *
 * @param date 日期
 * @return 是否为上午
 */
public static boolean isAM(Date date) {
   return DateTime.of(date).isAM();
}

Исходный код **DateTime.of(date).isAM()** можно разобрать на две части.

  • DateTime.of(date)
  • DateTime.isAM()

DateTime.of(date)Оно было введено выше, и здесь нет слова «вода».

Вторая часть,getFieldМетод был представлен выше, и здесь нет слова «вода».

вынес решениеCalendar.AM == getField(DateField.AM_PM)

/**
 * 是否为上午
 *
 * @return 是否为上午
 */
public boolean isAM() {
   return Calendar.AM == getField(DateField.AM_PM);
}

Имя метода: DateUtil.isPM(java.util.Date)

Описание метода

это полдень

Анализ исходного кода один

/**
 * 是否为下午
 *
 * @param date 日期
 * @return 是否为下午
 */
public static boolean isPM(Date date) {
   return DateTime.of(date).isPM();
}

Исходный код **DateTime.of(date).isPM()** можно разобрать на две части.

  • DateTime.of(date)
  • DateTime.isPM()

DateTime.of(date)Оно было введено выше, и здесь нет слова «вода».

Вторая часть,getFieldМетод был представлен выше, и здесь нет слова «вода».

вынес решениеCalendar.PM== getField(DateField.AM_PM)

/**
 * 是否为下午
 *
 * @return 是否为下午
 */
public boolean isPM() {
   return Calendar.PM == getField(DateField.AM_PM);
}

Имя метода: DateUtil.thisYear()

Описание метода

вернуться в этом году

Анализ исходного кода один

/**
 * @return 今年
 */
public static int thisYear() {
   return year(date());
}

**год(дата())** исходного кода можно разобрать на две части.

DateTime.date()

/**
 * 当前时间,转换为{@link DateTime}对象
 *
 * @return 当前时间
 */
public static DateTime date() {
   return new DateTime();
}

Имя метода: DateUtil.thisMonth()

Описание метода

Возвращает текущий месяц

Анализ исходного кода один

/**
 * @return 当前月份
 */
public static int thisMonth() {
   return month(date());
}

**месяц(дата())** исходного кода можно разобрать на две части

  • DateTime.date() Получить текущее время и вернуть тип DateTime
  • DateTime.month(), чтобы получить часть годаАнализ исходного кода

DateTime.date()

/**
 * 当前时间,转换为{@link DateTime}对象
 *
 * @return 当前时间
 */
public static DateTime date() {
   return new DateTime();
}

Имя метода: DateUtil.thisMonthEnum()

Описание метода

Возвращает текущий месяц

Анализ исходного кода один

/**
 * @return 当前月份 {@link Month}
 */
public static Month thisMonthEnum() {
   return monthEnum(date());
}

**monthEnum(date())** исходного кода можно разобрать на две части.

  • DateTime.date() Получить текущее время и вернуть тип DateTime
  • DateTime.monthEnum(), чтобы получить часть годаАнализ исходного кода

DateTime.date()

/**
 * 当前时间,转换为{@link DateTime}对象
 *
 * @return 当前时间
 */
public static DateTime date() {
   return new DateTime();
}

Имя метода: DateUtil.thisWeekOfYear()

Описание метода

Возвращает неделю года для текущей даты

Анализ исходного кода один

/**
 * @return 当前日期所在年份的第几周
 */
public static int thisWeekOfYear() {
   return weekOfYear(date());
}

**weekOfYear(date())** исходного кода можно разобрать на две части.

  • DateTime.date() Получить текущее время и вернуть тип DateTime
  • DateTime.weekOfYear(), чтобы получить часть годаАнализ исходного кода

DateTime.date()

/**
 * 当前时间,转换为{@link DateTime}对象
 *
 * @return 当前时间
 */
public static DateTime date() {
   return new DateTime();
}

Имя метода: DateUtil.thisWeekOfMonth()

Описание метода

Возвращает неделю месяца для текущей даты

Анализ исходного кода один

	/**
	 * @return 当前日期所在月份的第几周
	 */
	public static int thisWeekOfMonth() {
		return weekOfMonth(date());
	}

**weekOfMonth(date())** исходного кода можно разобрать на две части.

  • DateTime.date() Получить текущее время и вернуть тип DateTime
  • DateTime.weekOfMonth(), чтобы получить часть годаАнализ исходного кода

DateTime.date()

/**
 * 当前时间,转换为{@link DateTime}对象
 *
 * @return 当前时间
 */
public static DateTime date() {
   return new DateTime();
}

Имя метода: DateUtil.thisDayOfMonth()

Описание метода

Возвращает день месяца, в котором находится текущая дата

Анализ исходного кода один

	/**
	 * @return 当前日期是这个日期所在月份的第几天
	 */
	public static int thisDayOfMonth() {
		return dayOfMonth(date());
	}

**dayOfMonth(date())** исходного кода можно разобрать на две части.

  • DateTime.date() Получить текущее время и вернуть тип DateTime
  • DateTime.dayOfMonth(), чтобы получить часть годаАнализ исходного кода

DateTime.date()

/**
 * 当前时间,转换为{@link DateTime}对象
 *
 * @return 当前时间
 */
public static DateTime date() {
   return new DateTime();
}

Имя метода: DateUtil.thisDayOfWeek()

Описание метода

Возвращает текущий день недели

Анализ исходного кода один

	/**
	 * @return 当前日期是星期几
	 */
	public static int thisDayOfWeek() {
		return dayOfWeek(date());
	}

**dayOfWeek(date())** исходного кода можно разобрать на две части.

  • DateTime.date() Получить текущее время и вернуть тип DateTime
  • DateTime.dayOfWeek(), чтобы получить часть годаАнализ исходного кода

DateTime.date()

/**
 * 当前时间,转换为{@link DateTime}对象
 *
 * @return 当前时间
 */
public static DateTime date() {
   return new DateTime();
}

Имя метода: DateUtil.thisDayOfWeekEnum()

Описание метода

Возвращает текущий день недели

Анализ исходного кода один

	/**
	 * @return 当前日期是星期几 {@link Week}
	 */
	public static Week thisDayOfWeekEnum() {
		return dayOfWeekEnum(date());
	}

**dayOfWeekEnum(date())** исходного кода можно разобрать на две части.

  • DateTime.date() Получить текущее время и вернуть тип DateTime
  • DateTime.dayOfWeekEnum(), чтобы получить часть годаАнализ исходного кода

DateTime.date()

/**
 * 当前时间,转换为{@link DateTime}对象
 *
 * @return 当前时间
 */
public static DateTime date() {
   return new DateTime();
}

Имя метода: DateUtil.thisHour(логическое)

Описание метода

Возвращает часовую часть текущей даты

Анализ исходного кода один

	/**
	 * @param is24HourClock 是否24小时制
	 * @return 当前日期的小时数部分<br>
	 */
	public static int thisHour(boolean is24HourClock) {
		return hour(date(), is24HourClock);
	}

** час (дата (), IS24HourClock) ** исходного кода можно разобрать на две части

DateTime.date()

/**
 * 当前时间,转换为{@link DateTime}对象
 *
 * @return 当前时间
 */
public static DateTime date() {
   return new DateTime();
}

Имя метода: DateUtil.thisMinute()

Описание метода

Возвращает часть минут текущей даты

Анализ исходного кода один

	/**
	 * @return 当前日期的分钟数部分<br>
	 */
	public static int thisMinute() {
		return minute(date());
	}

**минуту(дату())** исходного кода можно разобрать на две части

  • DateTime.date() Получить текущее время и вернуть тип DateTime
  • DateTime.minute(), чтобы получить часть годаАнализ исходного кода

DateTime.date()

/**
 * 当前时间,转换为{@link DateTime}对象
 *
 * @return 当前时间
 */
public static DateTime date() {
   return new DateTime();
}

Имя метода: DateUtil.thisSecond()

Описание метода

Возвращает секундную часть текущей даты

Анализ исходного кода один

	/**
	 * @return 当前日期的秒数部分<br>
	 */
	public static int thisSecond() {
		return second(date());
	}

**Вторую(дату())** исходного кода можно разобрать на две части.

  • DateTime.date() Получить текущее время и вернуть тип DateTime
  • DateTime.second(), чтобы получить часть годаАнализ исходного кода

DateTime.date()

/**
 * 当前时间,转换为{@link DateTime}对象
 *
 * @return 当前时间
 */
public static DateTime date() {
   return new DateTime();
}

Имя метода: DateUtil.thisMillisecond()

Описание метода

Возвращает миллисекундную часть текущей даты

Анализ исходного кода один

	/**
	 * @return 当前日期的毫秒数部分<br>
	 */
	public static int thisMillisecond() {
		return millisecond(date());
	}

**миллисекунду(date())** исходного кода можно разобрать на две части

  • DateTime.date() Получить текущее время и вернуть тип DateTime
  • DateTime.millisecond(), чтобы получить часть годаАнализ исходного кода

DateTime.date()

/**
 * 当前时间,转换为{@link DateTime}对象
 *
 * @return 当前时间
 */
public static DateTime date() {
   return new DateTime();
}

Имя метода: DateUtil.yearAndQuarter(java.util.Date)

Описание метода

Получить указанную дату, год и сезон
Формат: [20131] указывает на первый квартал 2013 года.

Анализ исходного кода один

/**
 * 获得指定日期年份和季节<br>
 * 格式:[20131]表示2013年第一季度
 *
 * @param date 日期
 * @return Quarter ,类似于 20132
 */
public static String yearAndQuarter(Date date) {
   return yearAndQuarter(calendar(date));
}

Исходный код **yearAndQuarter(calendar(date))** можно разобрать на две части

  • календарь (дата): преобразование объекта даты в объект календаря
  • yearAndQuarter(Calendar)

Анализ кода метода yearAndQuarter:

Получить годcal.get(Calendar.YEAR)

Получить четвертьcal.get(Calendar.MONTH) / 3 + 1

Затем объедините строки через StringBuilder.

/**
 * 获得指定日期年份和季度<br>
 * 格式:[20131]表示2013年第一季度
 *
 * @param cal 日期
 * @return 年和季度,格式类似于20131
 */
public static String yearAndQuarter(Calendar cal) {
   return StrUtil.builder().append(cal.get(Calendar.YEAR)).append(cal.get(Calendar.MONTH) / 3 + 1).toString();
}

Имя метода: DateUtil.yearAndQuarter(java.util.Date, java.util.Date)

Описание метода

Получить год и время года в указанном интервале дат

Анализ исходного кода один

/**
 * 获得指定日期区间内的年份和季节<br>
 *
 * @param startDate 起始日期(包含)
 * @param endDate   结束日期(包含)
 * @return 季度列表 ,元素类似于 20132
 */
public static LinkedHashSet<String> yearAndQuarter(Date startDate, Date endDate) {
   if (startDate == null || endDate == null) {
      return new LinkedHashSet<>(0);
   }
   return yearAndQuarter(startDate.getTime(), endDate.getTime());
}

Как показано в приведенном выше коде, существует пустая обработка

Затем я написал цикл while для хранения подходящих лет и кварталов в LinkedHashSet. После сохранения строки лет и кварталов к времени начала будет добавлено 3 месяца. Если время начала превышает время окончания, пусть время окончания равно время начала и завершает цикл после обработки

/**
 * 获得指定日期区间内的年份和季度<br>
 *
 * @param startDate 起始日期(包含)
 * @param endDate   结束日期(包含)
 * @return 季度列表 ,元素类似于 20132
 * @since 4.1.15
 */
public static LinkedHashSet<String> yearAndQuarter(long startDate, long endDate) {
   LinkedHashSet<String> quarters = new LinkedHashSet<>();
   final Calendar cal = calendar(startDate);
   while (startDate <= endDate) {
      // 如果开始时间超出结束时间,让结束时间为开始时间,处理完后结束循环
      quarters.add(yearAndQuarter(cal));

      cal.add(Calendar.MONTH, 3);
      startDate = cal.getTimeInMillis();
   }

   return quarters;
}