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年是平年
    
  • 相关阅读:
    你最喜欢的程序员漫画
    编程名言名句
    查看一个数是不是2的n次方
    程序员需要有多懒 ?- cocos2d-x 数学函数、常用宏粗整理
    C++中string、int、char之间转换
    cocos2d-x 中使用 srand((unsigned)time(NULL))重新设置一个随机种子
    ASP.NET MVC SignalR 配合VUE
    VS Visual Studio光标无法自动到行尾,点哪里就在哪里解决办法
    .NET Core Entity Framework 代码优先配置
    Image Bitmap转MemoryStream后,上传遇到问题,报Index异常
  • 原文地址:https://www.cnblogs.com/bbn0111/p/7508690.html
Copyright © 2011-2022 走看看