Skip to content

Date对象减100天的两种方式

  • 使用 Calendar

    java
    import java.util.Calendar;
    import java.util.Date;
    
    public class Main {
        public static void main(String[] args) {
            // 当前日期
            Date currentDate = new Date();
            System.out.println("当前日期: " + currentDate);
    
            // 创建 Calendar 实例
            Calendar calendar = Calendar.getInstance();
            calendar.setTime(currentDate);
            
            // 减去 100 天
            calendar.add(Calendar.DAY_OF_MONTH, -100);
            
            // 获取新的 Date
            Date newDate = calendar.getTime();
            System.out.println("减去 100 天后的日期: " + newDate);
        }
    }
  • 使用 java.time 包(java8及以上,推荐,因为是线程安全的且更易使用)

    java
    import java.time.LocalDate;
    import java.time.ZoneId;
    import java.util.Date;
    
    public class Main {
        public static void main(String[] args) {
            // 当前日期
            LocalDate currentDate = LocalDate.now();
            System.out.println("当前日期: " + currentDate);
    
            // 减去 100 天
            LocalDate newDate = currentDate.minusDays(100);
            System.out.println("减去 100 天后的日期: " + newDate);
            
            // 如果需要将 LocalDate 转换为 Date
            Date date = Date.from(newDate.atStartOfDay(ZoneId.systemDefault()).toInstant());
            System.out.println("转回 Date 格式: " + date);
        }
    }

Java8获取指定月份的所有日期

  • 步骤:创建一个指定月份的LocalDate对象 → 获取该月份的第一天日期 → 获取该月份的最后一天日期 → 遍历从第一天到最后一天的所有日期

  • 代码

    java
    // 创建一个指定月份的LocalDate对象
    int year = 2023;
    int month = 9;
    LocalDate currentMonth = LocalDate.of(year, month, 1);
    // 获取该月份的第一天日期
    LocalDate firstDayOfMonth = currentMonth.withDayOfMonth(1);
    // 获取该月份的最后一天日期
    LocalDate lastDayOfMonth = currentMonth.with(TemporalAdjusters.lastDayOfMonth());
    // 遍历从第一天到最后一天的所有日期
    LocalDate currentDay = firstDayOfMonth;
    while (!currentDay.isAfter(lastDayOfMonth)) {
        System.out.println(currentDay);
    
        // 当前日期增加一天
        currentDay = currentDay.plusDays(1);
    }

使用Date自带的函数compareTo比较大小

  • 用法:相等返回0,大于返回1,小于返回-1

    java
    public static void main(String[] args) throws ParseException {
    
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
        
        Date date1 = sdf.parse("2012-05-12 15:16:00");
        Date date2 = sdf.parse("2011-05-12 15:16:00");
        System.out.println(date1.compareTo(date2)); // date1 > date2, 返回1
    
    }

当前日期转字符串

  • 使用SimpleDateFormat

    java
    public static void main(String[] args) {
        SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    
        Date date = new Date();
    
        String formattedDate = formatter.format(date);
    
        System.out.println("Formatted Date: " + formattedDate);
    }
  • 使用DateTimeFormatter

    java
    public static void main(String[] args) {
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
    
        LocalDateTime now = LocalDateTime.now();
    
        String formattedDate = now.format(formatter);
    
        System.out.println("Formatted Date: " + formattedDate);
    }
  • 使用String.format()方法

    java
    public static void main(String[] args) {
        Calendar calendar = Calendar.getInstance();
    
        int year = calendar.get(Calendar.YEAR);
        int month = calendar.get(Calendar.MONTH) + 1; // Months are 0-based in Calendar
        int day = calendar.get(Calendar.DAY_OF_MONTH);
        int hour = calendar.get(Calendar.HOUR_OF_DAY);
        int minute = calendar.get(Calendar.MINUTE);
        int second = calendar.get(Calendar.SECOND);
    
        String formattedDate = String.format("%04d-%02d-%02d %02d:%02d:%02d", year, month, day, hour, minute, second);
    
        System.out.println("Formatted Date: " + formattedDate);
    }
  • 参考文档

MIT版权,未经许可禁止任何形式的转载