zoukankan      html  css  js  c++  java
  • Java 有关获取时间的类:Date类、SimpleDateFormat类和Calendar类

    Date类

    Date类概述(util包下的)

    类Date表示特定的瞬间,精确到秒

    构造方法

    public Date()
    public Date(long time)

    import java.util.Date;
    public class test {
        public static void main(String[] args) {
        
            Date d1=new Date();    //如果没有传参数代表当前时间
            System.out.println(d1);   
            
            Date d2=new Date(0);    //如果构造方法中参数传为0代表的是1970年1月1日
            System.out.println(d2);
        }
        
    }
    输出:
    Mon Sep 11 20:36:54 CST 2017
    Thu Jan 01 08:00:00 CST 1970
    
    

    成员方法

    public long getTime()
    public void setTime(long time)

    import java.util.Date;
    public class test {
        public static void main(String[] args) {
        
            Date d1=new Date();    //如果没有传参数代表当前时间
            System.out.println(d1.getTime());     //通过时间对象获取毫秒值
            
            System.out.println(System.currentTimeMillis());  //获取当前毫秒值
        }
        
    }
    输出:
    1505133692683
    1505133692683
    
    import java.util.Date;
    public class test {
        public static void main(String[] args) {
        
            Date d1=new Date();    //如果没有传参数代表当前时间
            d1.setTime(1000);      //设置毫秒值改变时间对象
            System.out.println(d1);     
        }
        
    }
    输出:
    Thu Jan 01 08:00:01 CST 1970
    
    

    SimpleDateFormat类

    SimpleDateFormat类概述

    DateFormat是日期/时间格式化子类的抽象类,它以与语言无关的方式格式化并解析日期或时间。是抽象类,所以使用其子类SimpleDateFormat。

    SimpleDateFormat构造方法

    public SimpleDateFormat()
    public SimpleDateFormat(String pattern)

    SimpleDateFormat 成员方法

    public final String format(Date date)
    public Date parse(String source)

    import java.text.SimpleDateFormat;
    import java.util.Date;
    public class test {
        public static void main(String[] args) {
        
            Date d=new Date();    //如果没有传参数代表当前时间
            SimpleDateFormat sdf=new SimpleDateFormat(); //创建时间格式化对象
            System.out.println(sdf.format(d));     
        }
        
    }
    输出:
    17-9-11 下午9:03
    
    
    import java.text.SimpleDateFormat;
    import java.util.Date;
    public class test {
        public static void main(String[] args) {
        
            Date d=new Date();    //如果没有传参数代表当前时间
            SimpleDateFormat sdf=new SimpleDateFormat("yyyy/MM/dd  HH:mm:ss"); //创建时间格式化对象
            System.out.println(sdf.format(d));     
        }
        
    }
    输出:
    2017/09/11  21:05:58
    
    import java.text.ParseException;
    import java.text.SimpleDateFormat;
    import java.util.Date;
    
    public class test {
    
        public static void main(String[] args) {
            //Date d=new Date();
            String str="1993-06-08 12:35:06";
            SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            try{
                Date d= sdf.parse(str);  //将时间对象转换为日期对象
                System.out.println(d);
            }
            catch(ParseException e){
                e.printStackTrace();
                
            }
            
        }
        
    }
    输出:
    Tue Jun 08 12:35:06 CST 1993
    

    算一算你来到这个世界多少天
    需求:算一算你来到这个世界多少天?
    分析:
    1.将生日字符串和今天字符串存在String类型的变量中
    2.定义日期格式化对象
    3.将日期字符串转换为日期对象
    4.通过日期对象获取时间毫秒值
    5.将两个时间相减除以1000,再除以60.再除以60,再除以24得到天

    import java.text.ParseException;
    import java.text.SimpleDateFormat;
    import java.util.Date;
    
    public class test {
    
        public static void main(String[] args) {
            
            //1.将生日字符串和今天字符串存在String类型的变量中
            String birthday="1993-06-08";
            String today="2017-09-12";
            //2.定义日期格式化对象
            SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
            
            try{
                //3.将日期字符串转换为日期对象
                Date db= sdf.parse(birthday);  //将时间对象转换为日期对象
                Date dt=sdf.parse(today);
                //4.通过日期对象获取时间毫秒值
                long time=dt.getTime()-db.getTime();
                //5.将两个时间相减除以1000,再除以60.再除以60,再除以24得到天
                System.out.println(time/1000/60/60/24);
            }
            catch(ParseException e){
                e.printStackTrace();
                
            }
            
        }
        
    }
    输出:
    8862
    

    Calendar类

    Calendar类概述

    Calendar类是一个抽象类,它为特定瞬间与一组诸如 YEAR、MONTH、DAY_OF_MONTH、HOUR等日历字段之间的转换提供了一些方法,并为操作日历字段(例如获取下星期的日期)提供了一些方法。

    成员方法

    public static Calendar getInstance()
    public int get(int field)
    public void add(int field,int amount)
    public final void set(int year,int month,int date)

    import java.text.SimpleDateFormat;
    import java.util.Calendar;
    import java.util.Date;
    public class test {
        public static void main(String[] args) {
            
            Calendar c=Calendar.getInstance();    //父类引用指向子类对象
            
            System.out.println(c.get(Calendar.YEAR));  //通过字段获取年份
            System.out.println(c.get(Calendar.MONTH));   //通过字段获取月,但是月是从0开始编号的
            System.out.println(c.get(Calendar.DAY_OF_MONTH));    //月中第几天
            System.out.println(c.get(Calendar.DAY_OF_WEEK));    //周中第几天,周日是第一天,周六是最后一天
            
            System.out.println(c.get(Calendar.YEAR)+"年"+(c.get(Calendar.MONTH)+1)+"月"+c.get(Calendar.DAY_OF_MONTH)+"日   "+getWeek(c.get(Calendar.DAY_OF_WEEK)));
            
            
            
        }
        
        public static String getWeek(int week){
            String[] arr={"","星期日","星期一","星期二","星期三","星期四","星期五","星期六"};
            return arr[week];
        }
    }
    输出:
    2017
    8
    12
    3
    2017年9月12日   星期二
    
    import java.text.SimpleDateFormat;
    import java.util.Calendar;
    import java.util.Date;
    public class test {
        public static void main(String[] args) {
            
            Calendar c=Calendar.getInstance();    //父类引用指向子类对象
            
            c.add(Calendar.DAY_OF_MONTH, -1);   //对指定的字段进行向前减或者向后加
            c.set(c.YEAR, 1993);                  //修改指定字段
            
            System.out.println(c.get(Calendar.YEAR)+"年"+(c.get(Calendar.MONTH)+1)+"月"+c.get(Calendar.DAY_OF_MONTH)+"日   "+getWeek(c.get(Calendar.DAY_OF_WEEK)));
            
            c.set(1993, 5, 8);
            System.out.println(c.get(Calendar.YEAR)+"年"+(c.get(Calendar.MONTH)+1)+"月"+c.get(Calendar.DAY_OF_MONTH)+"日   "+getWeek(c.get(Calendar.DAY_OF_WEEK)));
            
        }
        
        public static String getWeek(int week){
            String[] arr={"","星期日","星期一","星期二","星期三","星期四","星期五","星期六"};
            return arr[week];
        }
    }
    输出:
    1993年9月11日   星期六
    1993年6月8日   星期二
    
    

    案例演示

    需求:键盘录入任意一个年份,判断该年是闰年还是平年
    分析:
    1.键盘录入年份 Scanner
    2.创建Calendar c=Calendar.getInstance()
    3.通过set方法设置为那一年的3月1号
    4.将日向前减去1
    5.判断该日是多少天,如果是29天则输出闰年否则输出平年

    import java.util.Calendar;
    import java.util.Scanner;
    public class test {
        public static void main(String[] args) {
            String str;
            //1.键盘录入年份  Scanner
            Scanner sc=new Scanner(System.in);
            System.out.println("请输入年份:");
            int year=sc.nextInt();
            
            //2.创建Calendar c=Calendar.getInstance()
            Calendar c=Calendar.getInstance();    //父类引用指向子类对象
            
            //3.通过set方法设置为那一年的3月1号
            c.set(year, 2, 1);
            
            //4.将日向前减去1
            c.set(c.DAY_OF_MONTH, -1);
            
            //5.判断该日是多少天,如果是29天这输出闰年否则输出平年
            if(c.get(Calendar.DAY_OF_MONTH)==29)
                 str="闰年";
            else
                 str="平年";
            
            System.out.println(year+"年是"+str);
        }
        
    }
    输出:
    请输入年份:
    1993
    1993年是平年
    
  • 相关阅读:
    Java实现 蓝桥杯VIP 算法训练 字符串逆序
    Java实现 蓝桥杯VIP 算法训练 字符串逆序
    Java实现 蓝桥杯VIP 算法训练 最长字符串
    Java实现 蓝桥杯VIP 算法训练 最长字符串
    Java实现 蓝桥杯VIP 算法训练 最长字符串
    Java实现 蓝桥杯VIP 算法训练 最长字符串
    Java实现 蓝桥杯VIP 算法训练 最长字符串
    Java实现 蓝桥杯VIP 算法训练 成绩的等级输出
    Java实现 蓝桥杯VIP 算法训练 成绩的等级输出
    Qt 自定义model实现文件系统的文件名排序
  • 原文地址:https://www.cnblogs.com/bbn0111/p/7508690.html
Copyright © 2011-2022 走看看