CtrlK
BlogDocsLog inGet started
Tessl Logo

tessl/maven-cn-hutool--hutool-all

A comprehensive Java utility library providing static method wrappers for common operations to reduce API learning costs and improve development efficiency

Pending
Overview
Eval results
Files

date-time-handling.mddocs/

Date and Time Handling

Comprehensive date and time utilities through the DateUtil class, providing parsing, formatting, calculation, and manipulation operations with enhanced DateTime class.

Import

import cn.hutool.core.util.DateUtil;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateField;
import cn.hutool.core.date.DateUnit;

Date Creation and Parsing

Date Creation

// Current date and time
public static DateTime date();
public static DateTime dateSecond();

// Create from components
public static DateTime date(int year, int month, int day);
public static DateTime date(int year, int month, int day, int hour, int minute, int second);

// Create from timestamp
public static DateTime date(long date);
public static DateTime date(Date date);

Date Parsing

// Parse with format
public static DateTime parse(CharSequence dateStr, String format);
public static DateTime parse(CharSequence dateStr, DatePattern pattern);

// Parse with auto-detection
public static DateTime parse(CharSequence dateStr);
public static DateTime parseDate(CharSequence dateStr);
public static DateTime parseTime(CharSequence dateStr);
public static DateTime parseDateTime(CharSequence dateStr);

// Parse from timestamp string
public static DateTime parseUTC(String utcString);
public static DateTime parseCst(String cstString);

Usage Examples:

// Parse with specific format
DateTime dt = DateUtil.parse("2023-12-25 15:30:45", "yyyy-MM-dd HH:mm:ss");

// Auto-detect common formats
DateTime dt1 = DateUtil.parse("2023-12-25");
DateTime dt2 = DateUtil.parse("2023/12/25 15:30:45");
DateTime dt3 = DateUtil.parse("Dec 25, 2023");

// Parse ISO formats
DateTime utc = DateUtil.parseUTC("2023-12-25T15:30:45Z");

Date Formatting

Format to String

// Format with pattern
public static String format(Date date, String format);
public static String format(Date date, DatePattern pattern);

// Common format methods
public static String formatDate(Date date);
public static String formatTime(Date date);
public static String formatDateTime(Date date);

// ISO formats
public static String formatIso8601(Date date);
public static String formatHttpDate(Date date);

Predefined Patterns

// Common date patterns from DatePattern enum
DatePattern.NORM_DATE_PATTERN = "yyyy-MM-dd";
DatePattern.NORM_TIME_PATTERN = "HH:mm:ss";  
DatePattern.NORM_DATETIME_PATTERN = "yyyy-MM-dd HH:mm:ss";
DatePattern.ISO8601_PATTERN = "yyyy-MM-dd'T'HH:mm:ss'Z'";
DatePattern.HTTP_DATETIME_PATTERN = "EEE, dd MMM yyyy HH:mm:ss z";
DatePattern.CHINESE_DATE_PATTERN = "yyyy年MM月dd日";

Usage Examples:

Date now = new Date();

// Standard formatting
String dateStr = DateUtil.format(now, "yyyy-MM-dd HH:mm:ss");
String isoStr = DateUtil.formatIso8601(now);

// Predefined patterns
String date = DateUtil.formatDate(now);          // "2023-12-25"
String time = DateUtil.formatTime(now);          // "15:30:45"
String datetime = DateUtil.formatDateTime(now);  // "2023-12-25 15:30:45"

Date Calculations

Date Arithmetic

// Add/subtract time units
public static DateTime offset(Date date, DateField dateField, int offset);
public static DateTime offsetDay(Date date, int offset);
public static DateTime offsetWeek(Date date, int offset);
public static DateTime offsetMonth(Date date, int offset);
public static DateTime offsetYear(Date date, int offset);

// Time zone offset
public static DateTime offsetHour(Date date, int offset);
public static DateTime offsetMinute(Date date, int offset);
public static DateTime offsetSecond(Date date, int offset);

Date Differences

// Calculate between dates
public static long between(Date beginDate, Date endDate, DateUnit unit);
public static long betweenDay(Date beginDate, Date endDate);
public static long betweenWeek(Date beginDate, Date endDate);
public static long betweenMonth(Date beginDate, Date endDate);
public static long betweenYear(Date beginDate, Date endDate);

// Time differences in milliseconds
public static long spendMs(long preTime);
public static String spendNt(long startNanoTime);

Usage Examples:

Date now = new Date();

// Add 5 days
DateTime future = DateUtil.offsetDay(now, 5);

// Subtract 2 months  
DateTime past = DateUtil.offsetMonth(now, -2);

// Calculate difference
Date start = DateUtil.parse("2023-01-01");
Date end = DateUtil.parse("2023-12-31");
long days = DateUtil.betweenDay(start, end);  // Number of days between dates

Date Ranges and Boundaries

Date Range Operations

// Range creation
public static List<DateTime> range(Date startDate, Date endDate, DateField field);
public static List<DateTime> rangeToList(Date startDate, Date endDate, DateField field);

// Date boundaries
public static DateTime beginOfDay(Date date);
public static DateTime endOfDay(Date date);
public static DateTime beginOfWeek(Date date);
public static DateTime endOfWeek(Date date);
public static DateTime beginOfMonth(Date date);
public static DateTime endOfMonth(Date date);
public static DateTime beginOfYear(Date date);
public static DateTime endOfYear(Date date);

Time Period Checks

// Check if dates are in same period
public static boolean isSameDay(Date date1, Date date2);
public static boolean isSameWeek(Date date1, Date date2, boolean isMondayAsFirstDay);
public static boolean isSameMonth(Date date1, Date date2);
public static boolean isSameYear(Date date1, Date date2);

// Weekend and weekday checks
public static boolean isWeekend(Date date);
public static boolean isWeekday(Date date);

Date Comparison

Comparison Operations

// Compare dates
public static int compare(Date date1, Date date2);
public static boolean isExpired(Date validDate);

// Before/after checks
public static boolean isIn(Date date, Date beginDate, Date endDate);

Calendar and Week Operations

Calendar Information

// Get calendar info
public static int year(Date date);
public static int month(Date date);
public static int dayOfMonth(Date date);
public static int dayOfYear(Date date);
public static int dayOfWeek(Date date);
public static int hour(Date date, boolean is24HourClock);
public static int minute(Date date);
public static int second(Date date);
public static int millisecond(Date date);

// Week operations
public static int weekOfYear(Date date);
public static int weekOfMonth(Date date);

Age and Period Calculations

// Age calculation
public static int age(Date birthDay, Date dateToCompare);
public static String formatBetween(Date beginDate, Date endDate, BetweenFormatter.Level level);

DateTime Class

Enhanced Date class with fluent API:

public class DateTime extends Date {
    // Constructors
    public DateTime();
    public DateTime(Date date);
    public DateTime(long timeMillis);
    public DateTime(String dateStr, String format);
    
    // Fluent operations  
    public DateTime offset(DateField dateField, int offset);
    public DateTime offsetNew(DateField dateField, int offset);
    
    // Formatting
    public String toString(String format);
    
    // Boundary operations
    public DateTime beginOfDay();
    public DateTime endOfDay();
    public DateTime beginOfWeek();
    public DateTime endOfWeek();
    public DateTime beginOfMonth();
    public DateTime endOfMonth();
    public DateTime beginOfYear();
    public DateTime endOfYear();
    
    // Conversion
    public long getTime();
    public String toDateStr();
    public String toTimeStr();
    public String toSqlTimestamp();
    
    // Comparison
    public boolean isBefore(Date date);
    public boolean isAfter(Date date);
    public boolean isWeekend();
}

Usage Examples:

// Create and manipulate DateTime
DateTime dt = DateUtil.date()
    .beginOfDay()           // Start of today
    .offsetDay(7)           // Add 7 days
    .endOfDay();            // End of that day

// Chaining operations
String result = DateUtil.parse("2023-12-25")
    .offsetMonth(1)
    .toString("yyyy-MM-dd"); // "2024-01-25"

// Weekend check
boolean weekend = DateUtil.date().isWeekend();

Enums and Constants

DateField Enum

public enum DateField {
    MILLENNIUM,     // 千年
    CENTURY,        // 世纪  
    DECADE,         // 十年
    YEAR,           // 年
    MONTH,          // 月
    WEEK_OF_YEAR,   // 一年中的第几周
    WEEK_OF_MONTH,  // 一月中的第几周
    DAY_OF_YEAR,    // 一年中的第几天
    DAY_OF_MONTH,   // 一月中的第几天
    DAY_OF_WEEK,    // 一周中的第几天
    HOUR_OF_DAY,    // 小时(24小时制)
    HOUR,           // 小时(12小时制)
    MINUTE,         // 分钟
    SECOND,         // 秒
    MILLISECOND     // 毫秒
}

DateUnit Enum

public enum DateUnit {
    MILLISECOND(1),
    SECOND(1000),
    MINUTE(60 * 1000),
    HOUR(60 * 60 * 1000),
    DAY(24 * 60 * 60 * 1000),
    WEEK(7 * 24 * 60 * 60 * 1000),
    MONTH, // Variable length
    YEAR   // Variable length
}

Week and Month Enums

public enum Week {
    SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY
}

public enum Month {
    JANUARY, FEBRUARY, MARCH, APRIL, MAY, JUNE,
    JULY, AUGUST, SEPTEMBER, OCTOBER, NOVEMBER, DECEMBER
}

All date operations handle null inputs gracefully and support both Date and DateTime objects. The DateTime class provides additional functionality and fluent API for complex date manipulations.

Install with Tessl CLI

npx tessl i tessl/maven-cn-hutool--hutool-all

docs

additional-utilities.md

bean-object-manipulation.md

collection-utilities.md

core-string-operations.md

cryptographic-operations.md

database-access.md

date-time-handling.md

file-io-operations.md

http-client-operations.md

index.md

json-processing.md

tile.json