当前位置:   article > 正文

日期时间api

日期时间api

日期时间 api

jdk8 之前

java.lang.System 类
  System类提供的 public static long currentTimeMillis()
    返回时间戳

  public void test1(){
      long time = System.currentTimeMillis();
      // 称为时间戳
      System.out.println(time); // 1645835914706
  }

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
java.util.Date 类
表示:特定的瞬间,精确到毫秒

构造器:
  Date():创建一个对应当前时间的Date对象
  Date(long date):创建一个对应当前时间的Date对象

常用方法:
  toString()
  getTime()

"例子"public void test1() {
    // 构造器一:Date():创建一个对应当前时间的Date对象
    Date date1 = new Date();
    System.out.println(date1.toString()); // Tue Mar 19 14:24:49 CST 2024
    System.out.println(date1.getTime()); // 1710829489906

    // 构造器二:Date(long date):创建指定毫秒数的Date对象
    Date date2 = new Date(155030620410L);
    System.out.println(date2.toString()); // Sat Nov 30 16:03:40 CST 1974
    System.out.println(date2.getTime()); // 155030620410
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
java.text.SimpleDateFormat类
1"日期 -> 字符串"
  import java.text.SimpleDateFormat;
  import java.util.Date;
  public class SimpleDateFormatExample {
      public static void main(String[] args) {
          Date date = new Date(); // 当前日期和时间
          SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
          String formattedDate = formatter.format(date);
          System.out.println(formattedDate); // 2024-03-19 14:35:28

          SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
          String formattedDate = formatter.format(date);
          System.out.println(formattedDate); // 2024-03-19
      }  
  }

2"字符串 -> 日期"
  import java.text.ParseException;  
  import java.text.SimpleDateFormat;  
  import java.util.Date;  
  public class SimpleDateFormatExample {  
      public static void main(String[] args) {  
          String dateString = "2023-04-01 15:30:45";
          String date2 = "2023-04-01 15:30";
          
          SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
          SimpleDateFormat formatter2 = new SimpleDateFormat("yyyy-MM-dd HH:mm");
          try {
              Date date = formatter.parse(dateString);
              System.out.println(date); // Sat Apr 01 15:30:45 CST 2023

              Date date2 = formatter2.parse(date2);
              System.out.println(date2); // Sat Apr 01 15:30:00 CST 2023
          } catch (ParseException e) {
              e.printStackTrace();
          }
      }
  }

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
Calendar日历类(抽象类)
1、
  'Calendar'是一个抽象基类,主要用于完成,日期字段之间相互操作。

2、实例化
  
    方式一:使用 Calendar.getInstance() 方法

    方式二:调用它的子类 'GregorianCalendar'的构造器

3、方法
  "Calendar的实例"是系统时间的抽象表示,通过 get(int field)来取得想要的时间信息,
  如:YEARMONTHDAY_OF_WEEKHOUR_OF_DAYMINUTESECONDpublic void set(int field, int value)
    
    public void add(int field, int amount)
    
    public final Date getTime()
    
    public final void setTime(Date date)

  "注意":
    获取月份时:一月是0,二月是1,以此类推,12月是11
    获取星期时:周日是1,周二是2... 周六是7

"例子"public void testCalendar() {
    Calendar calendar = Calendar.getInstance();
    /*
      打印出calendar对象的实际类,
      由于,Calendar.getInstance() 返回的是 GregorianCalendar的实例,
      所以,输出:class java.util.GregorianCalendar。
    */
    System.out.println(calendar.getClass()); // class java.util.GregorianCalendar

    // 获取当前日期,是所在月份的第几天,如:如果今天是5月10日,days的值将是10。
    int days = calendar.get(Calendar.DAY_OF_MONTH);
    System.out.println(days);

    // 获取当前日期,是所在年份的第几天
    System.out.println(calendar.get(Calendar.DAY_OF_YEAR));

    /*
        设置当前日期为所在月份的第22天,
        如果,当前月份没有第22天(如果当前是2月且不是闰年),
        那么,Calendar会自动将月份前进到下一个有第22天的月份。
    */
    calendar.set(Calendar.DAY_OF_MONTH, 22);
    days = calendar.get(Calendar.DAY_OF_MONTH);
    System.out.println(days);

    /*
        calendar.add(Calendar.DAY_OF_MONTH, -3)
        调用Calendar对象的add(),将当前日期减去3天,
        使用Calendar.DAY_OF_MONTH作为字段参数,表示你想要改变的是月份中的天数,
        传递-3作为增量值,表示你想要减去3天,
        如果减去3天后得到的日期不在当前月份中(如,当前是某月的1号,减去3天后得到的日期将是上个月的最后一天),
        Calendar对象会自动调整月份和年份字段以反映正确的日期。
    */
    calendar.add(Calendar.DAY_OF_MONTH, -3);
    days = calendar.get(Calendar.DAY_OF_MONTH);
    System.out.println(days);

    // getTime():日历类---> Date
    Date date = calendar.getTime();
    System.out.println(date); // Tue Mar 19 14:51:37 CST 2024

    // setTime():Date ---> 日历类
    Date date1 = new Date();
    System.out.println("date1= " + date1); // date1= Tue Mar 19 15:07:45 CST 2024
    calendar.setTime(date1);
    days = calendar.get(Calendar.DAY_OF_MONTH);
    System.out.println(days); // 19
}





  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79

jdk8 之后

LocalDate、LocalTime、LocalDateTime 类
public void test4(){
    // 创建LocalDate对象,它表示当前的日期(年、月、日),不包含时间信息
    LocalDate localDate = LocalDate.now(); // 返回当前的日期
    System.out.println(localDate); // 2024-03-19

    // 创建LocalTime对象,它表示当前的时间(时、分、秒、纳秒),不包含日期信息
    LocalTime localTime = LocalTime.now(); // 返回当前的时间
    System.out.println(localTime); // 15:14:28.354

    // 创建LocalDateTime对象,它结合了LocalDate和LocalTime,表示当前的日期和时间
    LocalDateTime localDateTime = LocalDateTime.now(); // 返回当前的日期和时间
    System.out.println(localDateTime); // 2024-03-19T15:14:28.354

    // -----------------------------------------------------------------

    LocalDateTime localDateTime1 = LocalDateTime.of(2020, 10, 6, 13, 23, 43);
    System.out.println(localDateTime1); // 2020-10-06T13:23:43
    DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
    String formattedDateTime = localDateTime1.format(formatter);
    System.out.println(formattedDateTime); // 2020-10-06 13:23:43

    System.out.println("-----------------------------------------------------------------");

    // 当月的第几天
    System.out.println(localDateTime.getDayOfMonth()); // 19

    // 星期几(英文)
    System.out.println(localDateTime.getDayOfWeek()); // TUESDAY

    // 月份(英文)
    System.out.println(localDateTime.getMonth()); // MARCH

    // 月份的数字表示
    System.out.println(localDateTime.getMonthValue()); // 3

    // 输出分钟数
    System.out.println(localDateTime.getMinute()); // 21

    System.out.println("-----------------------------------------------------------------");

    /*
    调用localDate对象的withDayOfMonth(),并传入22作为参数,
    这个方法返回一个新的LocalDate对象,其年份和月份与原始localDate对象相同,但日部分被设置为22,
    原始的localDate对象不会被修改,因为LocalDate对象是不可变的
    */
    LocalDate localDate1 = localDate.withDayOfMonth(22);
    System.out.println(localDate); // 2024-03-19
    System.out.println(localDate1); // 2024-03-22

    LocalDateTime localDateTime2 = localDateTime.withHour(4);
    System.out.println(localDateTime); // 2024-03-19T15:26:45.466
    System.out.println(localDateTime2); // 2024-03-19T04:26:45.466

    System.out.println("-----------------------------------------------------------------");

    /*
        调用localDateTime对象的plusMonths()方法,并传入了3作为参数,
        这个方法返回一个新的LocalDateTime对象,它的日期时间是在原始localDateTime对象的基础上增加了3个月
    */
    LocalDateTime localDateTime3 = localDateTime.plusMonths(3);
    System.out.println(localDateTime); // 2024-03-19T15:29:13.797
    System.out.println(localDateTime3); // 2024-06-19T15:29:13.797

    System.out.println("-----------------------------------------------------------------");

    /*
        调用localDateTime对象的minusDays()方法,并传入了6作为参数,
        这个方法返回一个新的LocalDateTime对象,它的日期时间是在原始localDateTime对象的基础上减去了6天。
    */
    LocalDateTime localDateTime4 = localDateTime.minusDays(6);
    System.out.println(localDateTime); // 2024-03-19T15:30:27.417
    System.out.println(localDateTime4); // 2024-03-13T15:30:27.417
}


  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
java.time.format.DateTimeFormatter 类

1、使用预定义的格式化程序

import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;

public class Main {
    public static void main(String[] args) {
       LocalDateTime now = LocalDateTime.now();

        DateTimeFormatter formatter = DateTimeFormatter.ISO_LOCAL_DATE_TIME;
        String formattedDateTime = now.format(formatter);
        System.out.println(formattedDateTime); // 2024-03-19T16:44:52.094
    }
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

2、使用自定义格式

import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
  
public class Main {
    public static void main(String[] args) {  
        LocalDateTime now = LocalDateTime.now();

        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
        String formattedDateTime = now.format(formatter);
        System.out.println(formattedDateTime); // 2024-03-19 16:45:27
    }
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

3、解析日期时间字符串

import java.time.LocalDateTime;  
import java.time.format.DateTimeFormatter;  
  
public class Main {  
    public static void main(String[] args) {  
        String dateTimeString = "2023-09-17 15:30:45";

        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
        LocalDateTime dateTime = LocalDateTime.parse(dateTimeString, formatter);
        System.out.println(dateTime); // 2023-09-17T15:30:45
    }  
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/294344
推荐阅读
相关标签
  

闽ICP备14008679号