Java常用API之Date和Calendar类

时间日期类

1. Date类

1.1 Date概述

Date表示一个特定的时间,精确到毫秒。在java.util包下.

1.2 Date类构造方法

方法说明
public Date()分配一个 Date对象并将它初始化,它代表的时间分配给它,测量精确到毫秒。
public Date(long date)分配一个 Date对象并将它初始化为代表指定的毫秒数自基准时间被称为“时代”,即1970年1月1日,00:00:00 GMT。

代码示例:

package com.date;
import java.util.Date;
/**
 * @author wyt
 */
public class TestDate {
    public static void main(String[] args) {
        Date date = new Date();
        System.out.println(date);

        long time = 1000*60*60;
        Date date1 = new Date(time);
        System.out.println(date1);
    }
}
//Sat Jul 11 21:12:15 CST 2020
//Thu Jan 01 09:00:00 CST 1970
可见第一个打印的是当前系统时间,
第二个应该为1970.1.1 1点。由于时区不同,故打印的为9点
    
    tips:中国采用的东八区时间
			1970-01-01 08:00:00 
可见第一个打印的是当前系统时间,第二个应该为1970.1.1 1点。由于时区不同,故打印的为9点
tips:中国采用的东八区时间
		1970-01-01 08:00:00 

1.3 Date类常用方法

methodexplain
public long getTime()返回从1970年1月1日 00:00:00到现在的毫秒数
public void setTime(long time)设置时间。给定的使毫秒值

代码示例:

package com.date;
import java.util.Date;
/**
 * @author wyt
 */
public class TestDate {
    public static void main(String[] args) {
        Date date = new Date();

        System.out.println(date.getTime());

        System.out.println(date.getTime() * 1.0/1000/60/60/24/365 + "年");

        long time = System.currentTimeMillis();
        System.out.println(time);
        
        date.setTime(time);
        System.out.println(date.getTime());
    }
}
//1594475638127
//50.560490808187474年
//1594475638151
//1594475638151

2. SimpleDateFormat类

2.1 SimpleDateFormat概述

SimpleDateFormat类使一个具体的类,经常用于日期格式化和解析日期

2.2 SimpleDateFormat类构造方法

methodexplain
public SimpleDateFormat()构造一个SimpleDateFormat,使用默认模式和日期格式
public SimpleDateFormat(String pattern)构造一个SimpleDateFormat,使用给定的模式和日期格式

2.3 SimpleDateFormat类常用方法

methodexplain
public final String format(Date date)格式化,即把Date转成String
public Date parse(String source)把给定的字符串解析成日期

代码示例:

package com.date;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * @author wyt
 */
public class TestDate {
    public static void main(String[] args) {
        Date date = new Date();

        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
        String format = simpleDateFormat.format(date);
        System.out.println(format);

        String s = "2020年5月17日 16:59:59";
        SimpleDateFormat simpleDateFormat1 = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
        //parse方法会抛出一个不可解析的日期的字符串的异常
        Date parse = null;
        try {
            parse = simpleDateFormat1.parse(s);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        System.out.println(parse);


    }
}
//2020年07月11日 22:13:20
//Sun May 17 16:59:59 CST 2020

2.4 日期工具类

package com.date;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * @author wyt
 */
public class DateUtils {
    public static String DateToString(Date date,String format){
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat(format);
        String s = simpleDateFormat.format(date);
        return s;
    }

    public static Date StringToDate(String s,String format){
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat(format);
        Date parse = null;
        try {
            parse = simpleDateFormat.parse(s);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return parse;
    }

    public static void main(String[] args) {
        Date date = new Date();
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat();
        String s = DateUtils.DateToString(date, "yyyy年MM月dd日 HH:mm:ss");
        System.out.println(s);

        String s1 = "2020年4月30日 05:34:55";
        Date date1 = DateUtils.StringToDate(s1, "yyyy年MM月dd日 HH:mm:ss");
        System.out.println(date1);
    }
}

3.Calendar类

	Calender日历类,替换了很多Date类中的方法。把很多数据都作为静态的属性,通过一些特定的方法来获取。比Date处理日期数据更加方便。
	
	Calender是一个abstract修饰的类,没有自己的类对象。这里通过特定的方法getInstance获取Calender日历类对象。
	public static Calender getInstance();
		默认当前系统时区的Calender对象

常用方法:
	public int get(int field);
		返回特定数据的数值
	public void set(int field, int value);
		设置特定字段对应的数据
	public final void set(int year,int month,int date)
		设置当前日期的年月日
	public Date getTime();
		返回得到一个Date对象,从计算机元年到现在的毫秒数,保存在date对象中
	public abstract void add(int field,int amount)
    	根据日历的规则,将指定的时间量添加或减去给定的日历字段
字段名含义
YEAR
MONTH月(从0开始,使用时习需要+1)
DAY_OF_MONTH当前月的第几天
HOUR小时(12小时制)
HOUR_OF_DAY小时(24小时制)
MINUTE分钟
SECOND
DAY_OF_WEEK周几(周日为1)

代码示例:

package com.date;
import java.util.Calendar;
/**
 * @author wyt
 */
public class TestCalendar {
    public static void main(String[] args) {
        //获取日历对象
        Calendar c = Calendar.getInstance();
        int year = c.get(Calendar.YEAR);
        //month是从0开始的[0-11],所以要加1
        int month = c.get(Calendar.MONTH) + 1;
        int day = c.get(Calendar.DATE);
        //打印当前日期-->2020.7.12
        System.out.println(year + "年" + month + "月" + day);


        //需求1:三年前的今天
        c.add(Calendar.YEAR,-3);
        year = c.get(Calendar.YEAR);
        System.out.println(year + "年" + month + "月" + day);

        //需求2:10年后的10天前
        c.add(Calendar.YEAR,10);
        c.add(Calendar.DATE,-10);
        year = c.get(Calendar.YEAR);
        day = c.get(Calendar.DATE);
        System.out.println(year + "年" + month + "月" + day);

        c.set(2050,10,1);
        year = c.get(Calendar.YEAR);
        month = c.get(Calendar.MONTH);
        day = c.get(Calendar.DATE);
        System.out.println(year + "年" + month + "月" + day);


    }
}
//2020年7月12
//2017年7月12
//2027年7月2
//2050年10月1

二月天案例:

package com.date;
import java.util.Calendar;
import java.util.Date;
import java.util.Scanner;
/**
 * @author wyt
 */
public class CalendarPractice {
    public static void main(String[] args) {
        //获取日历对象
        Calendar calendar = Calendar.getInstance();
        //手动输入年份
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入年份:");
        int year = scanner.nextInt();
        //把日历设置成手动输入的年份的3月1日
        calendar.set(year,2,1);
        //将3.1日往前推一天就是二月的最后一天
        calendar.add(Calendar.DATE,-1);
        //获取2月的天数
        int day = calendar.get(Calendar.DAY_OF_MONTH);
        //输出结果
        System.out.println(year + "年2月共有" + day + "天");
    }
}
//请输入年份:
//2020
//2020年2月共有29天
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值