日期类

日期类

1.Date类概述和构造方法

public Date()   // 分配一个Date对象,并初始化,以便它代表他被分配的时间,精确到毫秒。

public Date(long date) //分配一个Date对象,并将其初始化为从标准基时间起指定的毫秒数。
import java.util.Date;

public class Date_Demo0 {
    public static void main(String[] args) {
        Date d = new Date();

        System.out.println(d);
        //toString()方法被重写
        System.out.println(d.toString());

        long date = 1000 * 60 * 60;
        //一小时
        Date d1 = new Date(date);
        System.out.println(d1);

    }
}

输出结果:


Tue Oct 15 12:18:48 CST 2019
Tue Oct 15 12:18:48 CST 2019
Thu Jan 01 09:00:00 CST 1970


2.Date的常用方法

public long getTime()  //获取的是日期对象从1970年1月1日00:00:00到现在的毫秒值

public  void setTime()  //设置时间,给的是毫秒值
import java.util.Date;

public class Date_Demo1 {
    public static void main(String[] args) {
        Date d1 = new Date();

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

        long time = System.currentTimeMillis();
        d1.setTime(time);
        System.out.println(d1);
    }
}

输出结果:


49.81972906871511年
Tue Oct 15 12:49:35 CST 2019


3.SimpleDateFormat类的概述

public SimpleDateFormat() // 构造一个SimpleDateFormat,使用默认模式和日期格式

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

1.格式化(从Date到String)

public final String format() //将日期格式化成日期/时间字符串

2.解析(从String到Date)

public Date parse(String source)//从给定字符串的开始解析文本以生成日期

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

public class SimpleDateFormat_Demo {
    public static void main(String[] args) throws ParseException {
        Date d = new Date();
        SimpleDateFormat sdf = new SimpleDateFormat();
        String s = sdf.format(d);
        System.out.println(s);

        Date d1 = new Date();
        SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
        String s1 = sdf1.format(d1);
        System.out.println(s1);

        System.out.println("-------------------");

        String s3 = "2019年10月15日 14:24:36";
        SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
        Date d2 = sdf2.parse(s3);
        System.out.println(d2);
    }
}

输出结果:


19-10-15 下午2:28

2019年10月15日 14:28:47

Tue Oct 15 14:24:36 CST 2019


案例:创建一个日期工具类,可自由转换时间格式

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

public class DateUtils {
    private DateUtils(){};
    public static String dateToString(Date date, String format){
        SimpleDateFormat std = new SimpleDateFormat(format);
        String s = std.format(date);
        return s;
    }
    public static Date StringToDate(String format,String s) throws ParseException {
        SimpleDateFormat sdf = new SimpleDateFormat(format);
        Date date = sdf.parse(s);
        return date;
    }
}
public class Date_Test {
    public static void main(String[] args) throws ParseException {
        Date date = new Date();
        String s = "yyyy年MM月dd日 HH:mm:ss";
        String s1 = "yyyy-MM-dd";
        String s2 = "HH:mm:ss";
        String s3 = DateUtils.dateToString(date, s);
        System.out.println(s3);

        String s4 = DateUtils.dateToString(date, s1);
        System.out.println(s4);

        String s5 = DateUtils.dateToString(date, s2);
        System.out.println(s5);

        Date date1 = DateUtils.StringToDate(s, "2018年02月10日 11:11:11");
        System.out.println(date1);

    }
}

输出结果:


2019年10月15日 17:58:35
2019-10-15

17:58:35

Sat Feb 10 11:11:11 CST 2018


4.Calendar

Calendar为某一时刻和一组日历字段之间提供了一些转化方法,并为操作日历提供了一些方法。

Calendar提供了一个类方法getInstance用于获取Calendar对象,其日历字段已使用当前日期和时间初始化

Calendar rightNow = Calendar.getInstance();
import java.util.Calendar;

public class Calendar_Demo0 {
    public static void main(String[] args) {
        Calendar c = Calendar.getInstance();
        //多态调用
        int year = c.get(Calendar.YEAR);
        int month = c.get(Calendar.MONTH) + 1;
        int date = c.get(Calendar.DATE);

        System.out.println(year + "年" + month + "月" + date + "日");
    }
}

输出结果:


2019年10月15日


Calendar的常用方法


public int get(int field) //返回给定日历字段的值

public abstract void add(int field,int amount)//根据日历的规则,将指定的时间量添加或减去给定的日历字段

public final void set(int year,int month,int date)//设置当前的日历
import java.util.Calendar;

public class Calendar_Demo0 {
    public static void main(String[] args) {
        Calendar c = Calendar.getInstance();
        //多态调用
        int year = c.get(Calendar.YEAR);
        int month = c.get(Calendar.MONTH) + 1;
        int date = c.get(Calendar.DATE);

        System.out.println(year + "年" + month + "月" + date + "日");

        System.out.println("--------------------");

        //10年后的两个月零3天前
        c.add(Calendar.YEAR,10);
        c.add(Calendar.MONTH,-2);
        c.add(Calendar.DATE,-3);

        int year1 = c.get(Calendar.YEAR);
        int month1 = c.get(Calendar.MONTH) + 1;
        int date1 = c.get(Calendar.DATE);

        System.out.println(year1 + "年" + month1 + "月" + date1 + "日");

        System.out.println("---------------------");

        c.set(2016,5,6);
        int year2 = c.get(Calendar.YEAR);
        int month2 = c.get(Calendar.MONTH) + 1;
        int date2 = c.get(Calendar.DATE);

        System.out.println(year2 + "年" + month2 + "月" + date2 + "日");
    }

}

输出结果:


2019年10月15日

2029年8月12日

2016年6月6日


案例:从键盘输入一个年份,输出结果为该年份的2月共有多少天

public class Calendar_Test {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        System.out.println("请输入年份: ");
        int year = sc.nextInt();

        Calendar c = Calendar.getInstance();

        c.set(year, 2, 1);//表示设置时间为某年3月1日
        c.add(Calendar.DATE, -1);

        int date = c.get(Calendar.DATE);
        System.out.println(year + "年的2月共有" + date + "天");
    }
}

输出结果:


请输入年份:
2019
2019年的2月共有28天


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值