JAVA常用类之Date、SimpleDataFormat、Calendar

JAVA常用类——Date

  • 概述:
    类 Date 表示特定的瞬间,精确到毫秒。
  • 构造方法
    Date() 表示年月日 时分秒
    分配Date 对象并初始化此对象,以表示分配它的时间(精确到毫秒)
    Date date = new Date();
    System.out.prinln(date); //打印当前的日期
    输出为:Wed Nov 06 17:25:35 CST 2019
    ------------------------------
    Date(long date) 按照计算机元年日期+date的毫秒指定日期来生成一个Date()对象!
    Date date1 = new Date(1000 * 60 *60* 24);
    System.out.println(date1);
    输出为:
    Fri Jan 02 08:00:00 CST 1970
    
  • JAVA的Date中有很多过时的方法,如果需要做更多关于时间的工作,还是用其他新类比较好
  • JAVA过时的方法如何注明?
    public class Myutils{
        @Deprecated //注解符号:用来表示此类或者此方法过时!
        public static viod add(){
            *****;
        }
    }
    
  • 获取一个日期对象对象毫秒值
    public long getTime():
    --------------------
    //获取从1970 01-01 00:00:00 到 现在的时间 之间 的间隔的毫秒值
    long time = date.getTime();
    System.out.println(time);
    输出:
    1573032471090
    
  • 给一个日期对象设置上指定的毫秒值 例:
    public void setTime(long time):
    -------------------------
    Date date1 = new Date();
    //给计算机元年,加上相应的时间量
    date1.setTime(1000*60*60*24);
    System.out.println(date1);
    输出:
    Fri Jan 02 08:00:00 CST 1970
    
  • long —Date 的转换 : 可以使用构造方法
  • Date---- long 的转换:调用getTime方法

JAVA常用类——SimpleDataFormat(格式化日期)

  • 概念:可以把日期格式化成我们的阅读习惯

  • 示例:(把日期对象转换成字符串!)

    	// 创建一个格式化日期的类,如果使用是空参构造,那么格式化日期时,则按照默认格式来记性格式化
    //默认格式:19-11-2 下午1:58
    SimpleDateFormat  dateFormat = new SimpleDateFormat();
    String dateTime = dateFormat.format(date); //date来自于 new Date();
    System.out.println(dateTime)
    输出:
    19-11-6 下午5:44
    ---------------------------------------
    //使用有参构造传入格式(自定义格式!)
    SimpleDateFormat dateFormat2 =  new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒S毫秒 E")
    String dateTime2 = dateFormat2.format(date);
    System.out.println(dateTime2)
    输出:
    20191106174401702毫秒 星期三
    
  • 使用有参构造传入格式
    规则的定义: (如下表)

符号含义
y
M
d
H
m
s
S毫秒
E星期几
  • 示例:(把日期字符串转换为日期对象!)
    //在解析日期字符串时,注意日期格式和字符串对应,如果对应不上,则报错:解析异常错误!
    String dateStr = "2015-10-10 14:20:20"
    SimpleDateFormat dateFormt = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")
    Date date = dateFormat.parse(dateStr);// 注意,如果要使用这个接口,必须把定义该语句的方法设为异常,即:要把(该类抛出一个异常,可用万能纠错键直接添加!)
    注意:返回的对象是Date()类的!
    例如:
    
    public class Myutils {
        public static Date stringToDate(String str) throws ParseException {
            SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            Date result = dateFormat.parse(str);
            return result;
        }
    
        public static String dateToString(Date date){
            SimpleDateFormat dateFormat =  new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒");
            String result = dateFormat.format(date);
            return result;
    
        }
    }
    
案例:创建日期转换的工具类:
  • 代码示例:
    public class DateUtils {
        private DateUtils() {
        }
    
        //把日期字符串,转换成Date 日期对象
        public static Date getDate(String dateStr, String format) throws ParseException {
            Date date = new SimpleDateFormat(format).parse(dateStr);
            return date;
        }
    
        //把当前日期对象,转换成日期字符串
        public static String getDateString(String format) {
            String dateStr = new SimpleDateFormat(format).format(new Date());
            return dateStr;
        }
    }
    
案例:计算你活了多少天
  • 代码示例:
public class Myutils {
    public static Date stringToDate(String str,String pattern) throws ParseException {
        SimpleDateFormat dateFormat = new SimpleDateFormat(pattern);
        Date result = dateFormat.parse(str);
        return result;
    }

    public static String dateToString(Date date){
        SimpleDateFormat dateFormat =  new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒");
        String result = dateFormat.format(date);
        return result;

    }
}
--------------------------------------
public class Test1 {
    public static void main(String[] args) throws ParseException {

        System.out.println("请输入您的出生日期:");
        String input_birthday = new Scanner(System.in).nextLine();
        System.out.println("请输入您的出生日期的输入格式:");
        String pattern = new Scanner(System.in).nextLine();
        Date birthday = Myutils.stringToDate(input_birthday,pattern);
        Date current = new Date();
        long result = (current.getTime() - birthday.getTime())/(1000*60*60*24);
        System.out.println("你已经活了"+result+"天!");
    }
}
-----------------
输出:
请输入您的出生日期:
1995-09-15
请输入您的出生日期的输入格式:
yyyy-MM-dd
你已经活了8814天!

Java常用类——Calendar

基础概念已经使用方法:
  • 概念:针对Date类中过时的操作,Java提供了另外一个类Calendar 来操作日期。
  • 特点:
    a. Calendar 类是一个抽象类,不能直接new对象,可以通过他的一个静态成员方法getInstance()来获取他的对象。
    b. 它为特定瞬间与一组诸如 YEAR、MONTH、DAY_OF_MONTH、HOUR等日历字段之间的转换提供了一些方法。
    c. 并为操作日历字段(例如获得下星期的日期)提供了一些方法。
  • 成员方法:
    public static Calendar getInstance()	使用默认时区和语言环境获得一个日历对象
    public int get(int field)				获得给定日历字段对应的值 field通过Calendar提供的字段来拿(其中field字段有很多种类型,参考示例!)
    
  • 示例:(Calender类成员方法使用)
    public class MyTest {
        public static void main(String[] args) {
            //针对Date类中过时的操作,Java 提供了另外一个类 Calendar 来操作日期
           //这个Calendar 中有一个静态方法getInstance()可以获取到该类的一个子类对象
            Calendar instance = Calendar.getInstance();
           // System.out.println(instance);
            //get() 方法
            int year = instance.get(Calendar.YEAR);
            int month = instance.get(Calendar.MONTH);
            int day = instance.get(Calendar.DAY_OF_MONTH);
            int hour = instance.get(Calendar.HOUR_OF_DAY);
            int min = instance.get(Calendar.MINUTE);
            int s = instance.get(Calendar.SECOND);
            System.out.println(year);
            System.out.println(month);
            System.out.println(day);
            System.out.println(hour);
            System.out.println(min);
            System.out.println(s);
        }
    }
    --------------
    输出:
    2019
    10(月份是从:0~117
    14
    38
    51
    
Calendar类的add()和set()方法:
  • 成员方法:
    public void add(int field,int amount)				根据日历的规则,为给定的日历字段添加或减去指定的时间量
    public final void set(int year,int month,int date)	设置日历时间 年月日
    
  • set()方法的案例:
public class MyTest2 {
    public static void main(String[] args) {
        Calendar instance = Calendar.getInstance();
        获取当前的时间:
        System.out.println(instance.get(Calendar.MONTH));
        System.out.println(instance.get(Calendar.YEAR));
        设置格式:(年月日 时分秒)  
        instance.set(2011, 12, 10);
        int i = instance.get(Calendar.YEAR);
        System.out.println(i);
        System.out.println(instance.get(Calendar.MONTH));
        只给对象的某个字段设置值:
        instance.set(Calendar.MONTH,2);
        System.out.println(instance.get(Calendar.MONTH));
    }
}
----------------
输出:
10
2019
2012(注意:这里从2011变成了2012)
0(注意:这里从12变成了0,因为月份设置里本来就是从0~11,所以12就成了下一年的1月份了)
2
  • add()方法的案例:(给当前日期添加或减去时间量)
public class MyTest3 {
    public static void main(String[] args) {
     	获取Calendar的实例对象:
        Calendar instance = Calendar.getInstance();
        给对应的字段,加上或减去时间量(减去 使用负值)
        instance.add(Calendar.YEAR,-1);
        System.out.println(instance.get(Calendar.YEAR));
    }
}
---------------------------
输出:
2018
  • 案例:(判断是否是闰年!)
public class MyTest4 {
    public static void main(String[] args) {
       /* A:
        案例演示
        需求:键盘录入任意一个年份,获取任意一年的二月有多少天*/

        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入一个年份:");
        int year = scanner.nextInt();
        -----------------------------------
        怎么判断是闰年(方法一:太麻烦)
        if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) {
            System.out.println("是闰年");
        }
        -------------------------------
        方法二:
        把日期设置到这一年的31号
        然后,减去1天 就回到 2月的最后一天 ,然后我取出这天
        Calendar instance = Calendar.getInstance();
        instance.set(year, 2, 1);
        instance.add(Calendar.DAY_OF_MONTH, -1);
        int day = instance.get(Calendar.DAY_OF_MONTH);
        System.out.println(day);
    }
}
---------------------
输出:
请输入一个年份:
2004
29(是闰年)
请输入一个年份:
2018
28(不是闰年)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值