时间类有关的常用方法及注意事项

1. 毫秒值


    获取系统当前时间的毫秒值,有了数值,方便我们对时间进行计算;
        "2019-1-21 22:22:22"  
    时间原点:格林威治时间   1970-1-1 00:00:00 000
        中国零时间   1970-1-1 08:00:00 000

2. Date 日期类


    java.util.Date;

    构造方法:
        new Date();         获取系统当前时间对象;
        new Date(long l);    创建从时间原点到指定毫秒值的时间对象

        new Date(1000);  // 1970-1-1 00:00:01

    成员方法:
        void setTime(long l);    设置时间对象的毫秒值
        long getTime();          获取时间对象的毫秒值
    
        new Student("阿含");
        s.setName("阿含");
    


3. DateFormat   时间格式化类


    子类:SimpleDateFormat

    构造方法:
        new SimpleDateFormat();    根据默认模板创建时间格式化对象
        new SimpleDateFormat(String s);  根据指定模板创建时间格式化对象

    把字符串转成时间对象:   【解析】   "2019-1-19"  ->  yyyy-MM-dd 
        Date parse(String s);
    把时间对象转成字符串:   【格式化】 yy-MM-dd SSS  ->  "19-1-19 "
        format(Date d);

 

4. Calendar  日历类


    为了让我们更加方便的来操作时间;

    DAY_OF_MONTH   月中天
    DAY_OF_YEAR    年中天
    DAY_OF_WEEK    周中天
    DATE           月中天
    YEAR           年
    MONTH           月
    

创建对象的方式:
        Calendar c = Calendar.getInstance();

        public static Calendar getInstance(){
            return Calendar所有的子类对象;
        }

        class A{}
        class B extends A{}
        class C extends A{}

        public A getA(){
            return new A()/B()/C();
        }

        public B getA(){
            return new B();
        }

    常用方法:
        set(int filed,int date);    设置指定字段的值

                              例如

//创建Calendar对象
Calendar c = Calendar.getInstance();
//将给定的日历字段设置到Calendar对象中
c.set(2018,1,14);

       add(int filed,int amount);  将指定字段的值进行加减操作
        get(int filed);             获取指定字段的值
        getTime();            把日历对象转成时间对象

        get(Calendar.DAY_OF_MONTH);  //21
    
    计算任意年是闰年还是平年:
        闰年:366天   2月29天
        平年:365天   2月28天
    
        Calendar c = Calendar.getInstance();
        c.set(2020,2,1);  //设置时间为3月1号    0 ~ 11
        c.add(Calendar.DAY_OF_MONTH,-1);   //然后再向前-1一天,变成2月最后一天
        System.out.println(c.get(Calendar.DAY_OF_MONTH)); //看看这一天是28还是29

        c.set(2020,11,31);  //设置时间为12月31号 
        System.out.println(c.get(Calendar.DAY_OF_YEAR));    // 看看这一天是年中的第几天,366还是365

 

 

在java8 中检测是否闰年


        LocalDateTime localDateTime = LocalDateTime.now();

        localDate.isLeapYear();//是否是闰年

    注意事项:
        1. 注意月份,日历类的月份是:0 ~ 11月  1 ~ 12月
        2. 注意星期,日历类的星期是:星期天~星期六  1-7
        // 查表法
        public static String getWeek(int week) {
        String[] arr = {"", "星期天", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"};
        return arr[week];
        }

JDK1.8新特性:时间类
    LocalDate

      LocalDate 提供了三种创建实例的方法:

       

                                

        
    LocalDateTime
              LocalDateTime 提供了三种创建实例的方法:
              
    LocalTime 

      LocalTime 提供了三种创建实例的方法:

                    

常用方法:

1

        

2 日期转换

LocalDate localDate=LocalDate.now();
     // 取本月第1天:
 LocalDate firstDayOfThisMonth =localDate.with(TemporalAdjusters.firstDayOfMonth()); // 2019-01-01
 System.out.println(firstDayOfThisMonth);
    // 取本月第2天:
 LocalDate secondDayOfThisMonth =localDate.withDayOfMonth(2); // 2019-01-02
 System.out.println(secondDayOfThisMonth);
   // 取本月最后一天,再也不用计算是28,29,30还是31:
 LocalDate lastDayOfThisMonth = localDate.with(TemporalAdjusters.lastDayOfMonth()); // 2019-01-31
 System.out.println(lastDayOfThisMonth);
  // 取下一天:
 LocalDate firstDayOf2019 = lastDayOfThisMonth.plusDays(1); // 变成了2019-02-01
 System.out.println(firstDayOf2019);
  // 取2019年1月第一个周一,这个计算用Calendar要死掉很多脑细胞:
 LocalDate firstMondayOf2019 = LocalDate.parse("2019-01-01").with(TemporalAdjusters.firstInMonth(DayOfWeek.MONDAY));
 System.out.println(firstMondayOf2019);//2019-01-07

 在新的Java 8中,日期和时间被明确划分为LocalDateLocalTimeLocalDate无法包含时间,LocalTime无法包含日期。当然,LocalDateTime才能同时包含日期和时间。新接口更好用的原因是考虑到了日期时间的操作,经常发生往前推或往后推几天的情况。

3   使用预定义的格式器来对日期进行解析/格式化

        /*在java8之前,时间日期的格式化非常麻烦,经常使用SimpleDateFormat来进行格式化,
          但是SimpleDateFormat并不是线程安全的。
          在java8中,引入了一个全新的线程安全的日期与时间格式器。并且预定义好了格式。*/
     public class Demo04LocalDate {
       public static void main(String[] args) throws ParseException {
        //java8之前
        //有一个时间字符串
        String strDate="2019-01-01";
        //格式化 // 使用解析时注意  我们创建的日期格式化对象的解析字符串 必须与 时间字符串对应
        SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyy-MM-dd");
        Date data=simpleDateFormat.parse(strDate);
        System.out.println(data);
        //java8
        String date = "2019-01-01";
        DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
        LocalDate localDate = LocalDate.parse(date, dateTimeFormatter);
        System.out.println(localDate);
    }
}

4 对日期进行格式化,转换成字符串

LocalDateTime类的实例,我们要把他转换成一个格式化好的日期串,与前例相同的是,我们仍需要制定模式串去创建一个DateTimeFormatter类的实例,但调用的是LocalDate.format()。这个方法会返回一个代表当前日期的字符串,对应的模式就是传入的DateTimeFormatter实例中定义好的
//创建一个DateFormat 对象
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日  HH:mm:ss");
//格式化当前时间
//获取当前时间对象
Date date=new Date();//Fri Jan 04 23:57:06 CST 2019
String string = sdf.format(date);
System.out.println(string);//2019年01月04日  23:57:06

//DateTimeFormatter类的实例
LocalDate localDate = LocalDate.now();
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy年MM日");
String format = localDate.format(dateTimeFormatter);
System.out.println(format);

6. System
    系统工具类:
        static long currentTimeMillis();   返回系统当前时间毫秒值
            将src数组中从srcPos索引位置开始,拷贝,到dest数组从destPos索引位置开始,拷贝length个
        void arrayCopy(object src,int srcPos,Object dest,int destPos,int length);  
        void exit(int i);    退出JVM

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值