zoukankan      html  css  js  c++  java
  • 时间(Date类、DateFormat类、Calendar类)

    1、Date类

    (1)时间原点:

    时间原点是1970年1月1日00:00:00

    (2)构造方法:

    Date类的构造方法一共有六个,其中四个已经过时:

    空参的构造方法,获取当前操作系统的日期和时间:

    有参数的构造方法,将对应的毫秒值转化为日期和时间:

    将Date自元年开始表示的日期转化为毫秒值:

    将毫秒值转化为日期:

    打印Date对象时默认调用此方法:

    (3)方法的运用:

    import java.util.Date;
    public class DateDemo {
        public static void main(String[] args) {
            Date date = new Date(0);// 毫秒值为0,即元年
            System.out.println("date类元年为:" + date);
            Date date1 = new Date(12345678912345L);// 毫秒值
            System.out.println("date类元年后的12345678912345毫秒为:" + date1);
            Date date2 = new Date();
            System.out.println("现在的时间为:" + date2.getTime() + "毫秒");
            System.out.println("现在的时间为:" + date2.toString());
        }
    }

     从运行结果来看date类的元年为:1970年1月1日08:00:00,不是1970年1月1日00:00:00,是因为中国是东八区,所以要加上8个小时。

     2、DateFormat类

    DateFormat 是日期/时间格式化子类的抽象类,它以与语言无关的方式格式化并解析日期或时间。可以将一个Date对象转换为一个符合指定格式的字符串,也可以将一个符合指定格式的字符串转为一个Date对象。日期/时间格式化子类(如 SimpleDateFormat)允许进行格式化(也就是日期 -> 文本)、解析(文本-> 日期)和标准化。

    SimpleDateFormat 是一个以与语言环境有关的方式来格式化和解析日期的具体类。

    import java.text.DateFormat;
    import java.text.ParseException;
    import java.text.SimpleDateFormat;
    import java.util.Date;
    
    public class DateFormatDemo {
        public static void main(String[] args) throws ParseException {
            Date date2 = new Date();
            System.out.println("现在的时间为:" + date2.getTime() + "毫秒");
            System.out.println("现在的时间为:" + date2.toString());
    
            Date date = new Date(date2.getTime());
            DateFormat df = new SimpleDateFormat("yyyy年MM月dd日HH时mm分ss秒");// 对日期进行格式化
            String str_time = df.format(date);
            System.out.println(str_time);// 把Date对象转换成String
    
            String str = "2019年7月9日";
            DateFormat df1 = new SimpleDateFormat("yyyy年MM月dd日");
            Date date1 = df1.parse(str);//parse: 从给定字符串的开始解析文本,以生成一个日期。
            System.out.println(date1);
        }
    }

     3、Calendar类

    Calendar类:是日历类,有很多静态方法。

    import java.util.Calendar;
    import java.util.Date;
    public class Calendardemo {
        public static void main(String[] args) {
            //Calendar类的方法getTime()
            Calendar c1 = Calendar.getInstance();//不需要直接new 子类的对象,通过静态方法直接获取
            Date date = c1.getTime();//把日历对象,转成Date日期对象
            System.out.println(date);
            
            Calendar c2 = Calendar.getInstance();
            c2.add(Calendar.DAY_OF_MONTH, -300);// 让日历中的天数向后偏移300天
            int year = c2.get(Calendar.YEAR);//年
            int month = c2.get(Calendar.MONTH) + 1;//月,月份从零开始,所以月份要加1
            int day = c2.get(Calendar.DAY_OF_MONTH);//日
            System.out.println(year + "年" + month + "月" + day + "日");
            
            Calendar c3 = Calendar.getInstance();
            c3.set(2099, 4, 1);
            int year1 = c3.get(Calendar.YEAR);//年
            int month1 = c3.get(Calendar.MONTH) + 1;//月
            int day1 = c3.get(Calendar.DAY_OF_MONTH);//日
            System.out.println(year1 + "年" + month1 + "月" + day1 + "日");
            
            Calendar c4 = Calendar.getInstance();
            int year2 = c4.get(Calendar.YEAR);//年
            int month2 = c4.get(Calendar.MONTH) + 1;//月
            int day2 = c4.get(Calendar.DAY_OF_MONTH);//日
            System.out.println(year2 + "年" + month2 + "月" + day2 + "日");
            
            Calendar c5= Calendar.getInstance();
            System.out.println("年:" + c5.get(Calendar.YEAR));
            System.out.println("月:" + (c5.get(Calendar.MONTH) + 1));       
            System.out.println("日:" + c5.get(Calendar.DAY_OF_MONTH));
            System.out.println("时:" + c5.get(Calendar.HOUR_OF_DAY));
            System.out.println("分:" + c5.get(Calendar.MINUTE));
            System.out.println("秒:" + c5.get(Calendar.SECOND));
        }
    }

     最大的特点是可以分别获取:年月日时分秒

    总结:

    1、第一代、第二代和第三代获取当前日期

    public class DateDemo {
        @Test
        public void test1(){
            Date date=new Date();
            SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyy-MM-dd hh时mm分ss秒");
            String dateString=simpleDateFormat.format(date);
            System.out.println(dateString);
        }
    
        @Test
        public void test2(){
            Calendar calendar=Calendar.getInstance();
            int year=calendar.get(Calendar.YEAR);
            int month=calendar.get(Calendar.MONTH);
            int day=calendar.get(Calendar.DAY_OF_MONTH);
            int hour=calendar.get(Calendar.HOUR);
            int minute=calendar.get(Calendar.MINUTE);
            int second=calendar.get(Calendar.SECOND);
            System.out.println(year+"-"+month+"-"+day+"-"+hour+"时"+minute+"分"+second+"秒");
        }
    @Test
    public void test3(){//jdk8 LocalDateTime localDateTime=LocalDateTime.now(); DateTimeFormatter dateTimeFormatter=DateTimeFormatter.ofPattern("yyyy-MM-dd HH时mm分ss秒"); String dateString=dateTimeFormatter.format(localDateTime); System.out.println(dateString); } }
    2020-08-04 19时33分53秒
  • 相关阅读:
    在operator =中要处理“自我赋值”
    delete指针以后应赋值为NULL
    【转】C++对成员访问运算符->的重载
    【转】浅析SkipList跳跃表原理及代码实现
    【KakaJSON手册】05_JSON转Model_05_动态模型
    【KakaJSON手册】04_JSON转Model_04_值过滤
    【KakaJSON手册】03_JSON转Model_03_key处理
    【KakaJSON手册】02_JSON转Model_02_数据类型
    【KakaJSON手册】01_JSON转Model_01_基本用法
    利用eclipse调试JDK源码
  • 原文地址:https://www.cnblogs.com/zhai1997/p/11349658.html
Copyright © 2011-2022 走看看