zoukankan      html  css  js  c++  java
  • Java时间操作常用api

    - 如何取得年月日、小时分钟秒?
    - 如何取得从1970年1月1日0时0分0秒到现在的毫秒数?
    - 如何取得某月的最后一天?
    - 如何格式化日期?
    答:
    问题1:创建java.util.Calendar 实例,调用其get()方法传入不同的参数即可获得参数所对应的值。Java 8中可以使用java.time.LocalDateTimel来获取,代码如下所示。

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    public class DateTimeTest {

        public static void main(String[] args) {

            Calendar cal = Calendar.getInstance();

            System.out.println(cal.get(Calendar.YEAR));

            System.out.println(cal.get(Calendar.MONTH));    // 0 - 11

            System.out.println(cal.get(Calendar.DATE));

            System.out.println(cal.get(Calendar.HOUR_OF_DAY));

            System.out.println(cal.get(Calendar.MINUTE));

            System.out.println(cal.get(Calendar.SECOND));

            // Java 8

            LocalDateTime dt = LocalDateTime.now();

            System.out.println(dt.getYear());

            System.out.println(dt.getMonthValue());     // 1 - 12

            System.out.println(dt.getDayOfMonth());

            System.out.println(dt.getHour());

            System.out.println(dt.getMinute());

            System.out.println(dt.getSecond());

        }

    }

    问题2:以下方法均可获得该毫秒数。

    1

    2

    3

    Calendar.getInstance().getTimeInMillis();

    System.currentTimeMillis();

    Clock.systemDefaultZone().millis(); // Java 8

    问题3:代码如下所示。

    1

    2

    Calendar time = Calendar.getInstance();

    time.getActualMaximum(Calendar.DAY_OF_MONTH);

    问题4:利用java.text.DataFormat 的子类(如SimpleDateFormat类)中的format(Date)方法可将日期格式化。Java 8中可以用java.time.format.DateTimeFormatter来格式化时间日期,代码如下所示。

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    import java.text.SimpleDateFormat;

    import java.time.LocalDate;

    import java.time.format.DateTimeFormatter;

    import java.util.Date;

    class DateFormatTest {

        public static void main(String[] args) {

            SimpleDateFormat oldFormatter = new SimpleDateFormat("yyyy/MM/dd");

            Date date1 = new Date();

            System.out.println(oldFormatter.format(date1));

            // Java 8

            DateTimeFormatter newFormatter = DateTimeFormatter.ofPattern("yyyy/MM/dd");

            LocalDate date2 = LocalDate.now();

            System.out.println(date2.format(newFormatter));

        }

    }

    补充:Java的时间日期API一直以来都是被诟病的东西,为了解决这一问题,Java 8中引入了新的时间日期API,其中包括LocalDate、LocalTime、LocalDateTime、Clock、Instant等类,这些的类的设计都使用了不变模式,因此是线程安全的设计。如果不理解这些内容,可以参考我的另一篇文章《关于Java并发编程的总结和思考》

  • 相关阅读:
    【二分】XMU 1587 中位数
    【动态规划】XMU 1560 新ACM规则
    【最短路】Vijos P1046 观光旅游
    【递归】Vijos P1114 FBI树(NOIP2004普及组第三题)
    一周多没打代码了。。
    6.4 文件与文件夹操作
    6.3.4 使用marshal 模块操作二进制文件
    6.3.3 使用 shelve 模块操作二进制文件
    6.3.2 使用struct模块读写二进制文件
    6.3.1 使用 pickle 模块读写二进制文件
  • 原文地址:https://www.cnblogs.com/maohuidong/p/7927427.html
Copyright © 2011-2022 走看看