• java8的日期、时间类


    一Date类(历史悠久) 月份与小时从0开始,天数从1开始,年从1900开始

     

    二.Calendar类

       ①抽象类

       ②不能直接实例化

    三.使用

       

     1 import java.util.Date;
     2 
     3 public class Demo_Date 
     4 {
     5   public static void main(String[] args) 
     6   {
     7     //获取当前时间
     8       Date d=new Date();
     9       //获取当前时间一百秒后的时间
    10       Date d2=new Date(System.currentTimeMillis()+100);
    11       //比较时间d是否在d2之前
    12       System.out.println(d.before(d2));
    13       //比较时间先后顺序,若在此之前则返回-1,若相等则返回0,否则返回1
    14       System.out.println(d.compareTo(d2));
    15    }
    16 }

     四.set方法的延迟性

     1 import java.text.SimpleDateFormat;
     2 import java.util.Calendar;
     3 import java.util.Date;
     4 /**
     5  * set()方法的延迟性
     6  *   当使用set修改月份的时候,字段确实改变
     7  *   但是只有使用get()、gettime()、getTimeMillis()、add()、roll()才会重新计算日历时间
     8  */
     9 public class AddTest{
    10    public static void main(String[] args) {
    11        //实例化一个calendar类
    12        Calendar cal=Calendar.getInstance(); 
    13        //设置时间
    14        cal.set(2018, 11, 8, 14, 30,30);//延迟计算
    15        //修改时间
    16        cal.add(Calendar.MONTH, 6);
    17        //计算时间并且接收
    18        Date day=cal.getTime();
    19        //创建转换器
    20        SimpleDateFormat sim=new SimpleDateFormat("y年M月d日  h:m:s");
    21        //转换为字符串格式
    22        String result=sim.format(day);       
    23        //获取时间
    24        System.out.println(result);       
    25 }
    26 }

    五.Calendar的容错性

           容错机制开启时

     1 import java.text.SimpleDateFormat;
     2 import java.util.Calendar;
     3 import java.util.Date;
     4 
     5 /*
     6  * Calendar的容错性:setLenient()方法
     7  *   1.当容错性没有关闭时,将月份设置为13时(月份是从0开始,代表一月)显示为二月
     8  *   并且会将YEAR字段加一(本实例当前时间是2018年)
     9  *   2.当容错性关闭时,导致运行时异常
    10  */
    11 public class LenientTest {
    12     public static void main(String[] args) {
    13         //实例化calendar对象
    14         Calendar ca=Calendar.getInstance();
    15         
    16             //ca.setLenient(false);//关闭容错性
    17          
    18         //随便设置一个时间
    19         ca.set(Calendar.MONTH, 13);
    20         //计算时间
    21         Date day=ca.getTime();
    22          //创建转换器
    23         SimpleDateFormat sim=new SimpleDateFormat("y年M月d日  h:m:s");
    24         //转换为字符串格式
    25         String result=sim.format(day);
    26         System.out.println(result);               
    27     }
    28 }

     容错机制关闭时

     1 /*
     2  * Calendar的容错性:setLenient()方法
     3  *   1.当容错性没有关闭时,将月份设置为13时(月份是从0开始,代表一月)显示为二月
     4  *   并且会将YEAR字段加一(本实例当前时间是2018年)
     5  *   2.当容错性关闭时,导致运行时异常
     6  */
     7 public class LenientTest {
     8     public static void main(String[] args) {
     9         //实例化calendar对象
    10         Calendar ca=Calendar.getInstance();
    11         
    12             ca.setLenient(false);//关闭容错性
    13          
    14         //随便设置一个时间
    15         ca.set(Calendar.MONTH, 13);
    16         //计算时间
    17         Date day=ca.getTime();
    18          //创建转换器
    19         SimpleDateFormat sim=new SimpleDateFormat("y年M月d日  h:m:s");
    20         //转换为字符串格式
    21         String result=sim.format(day);
    22         System.out.println(result);               
    23     }
    24 }

    六.java8新增的日期、时间包的使用(请自行查阅API文档)

     1 import java.time.Clock;
     2 import java.time.Duration;
     3 import java.time.Instant;
     4 import java.time.LocalDate;
     5 import java.time.LocalDateTime;
     6 import java.time.LocalTime;
     7 import java.time.Month;
     8 import java.time.MonthDay;
     9 import java.time.Year;
    10 import java.time.YearMonth;
    11 /**
    12  * systemUTC()方法返回当前时间使用UTC时区转换为日期和时间
    13  */
    14 public class TimeClockTest {
    15     public static void main(String[] args) {
    16         //----下面是关于clock的用法----
    17         //获取当前clock
    18         Clock clock=Clock.systemUTC();
    19         //通过Clock获取当前时刻
    20         System.out.println("当前时刻为: "+clock.instant());
    21         //获取clock对应的毫秒数,与system.currentTimeMillis()输出相同
    22         System.out.println(clock.millis());
    23         System.out.println(System.currentTimeMillis());
    24         //----下面是关于Duration的用法------
    25         Duration dur=Duration.ofSeconds(6000);
    26         System.out.println("6000秒相当于: "+dur.toMinutes()+"分");
    27         System.out.println("6000秒相当于: "+dur.toMinutes()+"小时");
    28         System.out.println("6000秒相当于: "+dur.toDays()+"天");
    29         //在clock基础上增加6000秒,返回新的clock
    30         Clock clock2=Clock.offset(clock, dur);
    31         //可以看到clock2与clock相差1小时40分
    32         System.out.println("当前时刻加6000秒为: "+clock2.instant());
    33         //下面是instant的用法
    34         //获取当前时间
    35         Instant instant=Instant.now();
    36         System.out.println(instant);
    37         //instant添加6000秒,返回新的Instant
    38         Instant instant2=instant.plusSeconds(6000);
    39         System.out.println(instant2);
    40         //根据字符串解析Instant对象
    41         Instant instant3=instant.parse("2018-12-08T11:57:43.054Z");
    42         System.out.println(instant3);
    43         //在instant3的基础上添加5小时4分钟
    44         Instant instant4=instant3.plus(Duration.ofHours(5).plusMinutes(4));
    45         System.out.println(instant4);
    46         //获取instant4五天前的时刻
    47         Instant instant5=instant4.minus(Duration.ofDays(5));
    48         System.out.println(instant5);
    49         //-----下面是关于LocalDate的用法-----
    50         LocalDate localdate=LocalDate.now();
    51         System.out.println(localdate);
    52         //获得2018年的第345天
    53         localdate=LocalDate.ofYearDay(2018, 345);
    54         System.out.println(localdate);
    55         //设置为2018年12月31日
    56         localdate=LocalDate.of(2018, Month.DECEMBER, 31);
    57         System.out.println(localdate);
    58         //---下面是关于LocalTime---的用法
    59         //获取当前时间
    60         LocalTime localtime=LocalTime.now();
    61         System.out.println(localtime);
    62         //设置为22点33分
    63         localtime=LocalTime.of(22, 33);
    64         System.out.println(localtime);
    65         //返回一天中的第5503秒
    66         localtime=LocalTime.ofSecondOfDay(5503);
    67         System.out.println(localtime);
    68         //---下面是关于localDateTime的用法
    69         //获取当前时间
    70         LocalDateTime localdatetime=LocalDateTime.now();
    71         System.out.println(localdatetime);
    72         //当前日期,时间加上25小时3分钟
    73         LocalDateTime future=localdatetime.plusHours(25).plusMinutes(3);
    74         System.out.println(future);
    75         //---下面是关于year,yearMonth,MonthDay的用法示例---
    76         Year year=Year.now();//获取当前的年份
    77         System.out.println("当前年份: "+year);//输出当前年份
    78          year=year.plusYears(5); //当前年份再加5
    79          System.out.println("当前年份再过5年: "+year);
    80          //根据指定月份获取yearsMonth
    81          YearMonth ym=year.atMonth(10);
    82          System.out.println("year年10月: "+ym);
    83          //当前年月再加5年.减三个月
    84          ym=ym.plusYears(5).minusMonths(3);
    85          System.out.println("year年10月再加5年,减3个月: "+ym);
    86          MonthDay md=MonthDay.now();
    87          System.out.println("当前月日: "+md);
    88          //设置为5月23日
    89          MonthDay md2=md.with(Month.MAY).withDayOfMonth(23);
    90          System.out.println("5月23日为: "+md2);
    91     }
    92 }

     

  • 相关阅读:
    文件上传案例_Socket_测试
    Linux的小整理(入门)
    full stack 第一天
    基础考题 试题
    shell语法
    网络管理
    图像类
    定时储存
    网络管理
    磁盘管理
  • 原文地址:https://www.cnblogs.com/zjm1999/p/10097351.html
Copyright © 2020-2023  润新知