Date类SimpleDateFormat类Calendar类

Date类

构造方法:

public Date()

public Date(long date):参数 date - 自 1970 年 1 月 1 日 00:00:00 GMT 以来的毫秒数。

成员方法:

public long getTime()//返回的是 1970 1 1 00:00:00 GMT 以来此日期表示的毫秒数。

public void setTime(longtime)//,设置对象,参数值是毫秒数

代码示例:

Date d = new Date();//无参构造方法,获取当前系统日期并初始化对象。

System.out.println(d);//MonApr 30 16:35:43 CST 2018

Date d1 = new Date(2000);//有参构造方法,参数值是一个long类型的数值,即自1970年1月1日起相差的毫秒数。

System.out.println(d1);//ThuJan 01 08:00:02 CST 1970(重写了toString方法,按照一定的格式进行输出)

d1.setTime(1000);//设置对象的时间点,即自1970年1月1日过了1000毫秒

System.out.println(d1);//ThuJan 01 08:00:01 CST 1970(这里的小时数是8点,是因为系统自动分辨时区,0点转换为东八区就是8点)

System.out.println(d.getTime());//1525077343545   返回的是距1970年1月1日的毫秒数。

SimpleDateFormat类

DateFormat类:public abstract class DateFormat

SimpleDateFormat类是DateFormat类的子类,DateFormat类是abstract类,不能实例化,但是这个类里面有一个format方法可以使日期格式化,想要用这个方法,就应该创建多态对象,继承并使用DateFormat类中的format方法。

构造方法:

public  SimpleDateFormat()//用默认的模式和默认语言环境的日期格式符号构造 SimpleDateFormat。

public  SimpleDateFormat(String pattern)// 用给定的模式和默认语言环境的日期格式符号构造SimpleDateFormat。

主要方法:

public  final String  format(Datedate)//继承父类的方法。将一个 Date 格式化为日期/时间字符串。传入的参数是一个要格式化的日期对象。(Date--->string

public  Date  parse(String source)//传入的是一个string类型的日期格式,应从其开始处进行解析,返回的是日期对象,即解析字符串得到的Date。(String---->Date)

代码示例:

DateFormat df = newSimpleDateFormat();//无参构造方法,按照默认格式进行格式化。创建多态对象,继承父类的format方法

String s = df.format(newDate());//传入Date对象,进行格式化,返回一个字符串类型的日期

System.out.println(s);//18-4-30下午4:35

DateFormat df1 = newSimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");//有参构造方法,参数是自己给定的日期格式。

String s1 = df1.format(newDate());//将Date类型转为string类型

System.out.println(s1);//2018年04月30日 16:35:43 按照给定的格式进行格式化

String s2 = "1999-01-01";

DateFormat df2 = newSimpleDateFormat("yyyy-MM-dd");//给定格式,与string定义的值的格式一致。

Date d3 = df2.parse(s2);//将string类型转为Date类型。需要抛出异常。

System.out.println(d3);//FriJan 01 00:00:00 CST 1999

Calendar类

public abstract class Calendar(抽象日历类)

与其他语言环境敏感类一样,Calendar 提供了一个类方法 getInstance,以获得此类型的一个通用的对象。Calendar 的 getInstance 方法返回一个 Calendar 对象,其日历字段已由当前日期和时间初始化:

     Calendar rightNow =Calendar.getInstance();

主要方法:

public static CalendargetInstance()//使用默认时区和语言环境获得一个日历。返回的Calendar 基于当前时间,使用了默认时区和默认语言环境。返回一个日历对象。

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

public void add(int field,int amount)// 根据日历的规则,为给定的日历字段添加或减去指定的时间量。参数:field- 日历字段。amount- 为字段添加的日期或时间量(可正可负)。

public void set(int field,int value)//将给定的日历字段设置为给定值。

public final Date getTime()//返回一个表示此Calendar时间值(从历元至现在的毫秒偏移量)的Date对象。Calendar---->Date

public final void setTime(Date date)// 使用给定的 Date 设置此 Calendar的时间。(Date---->Calendar

代码示例:

Calendar c =Calendar.getInstance();//通过类方法getInstance()创建对象

System.out.println(c);//java.util.GregorianCalendar[time=1525082698460,areFieldsSet=true,areAllFieldsSet=true.....

c.add(Calendar.MONTH,3);//月份往后加3个月

System.out.println(c.get(Calendar.MONTH));//6

c.add(Calendar.MONTH,-2);//月份往前倒退2个月

System.out.println(c.get(Calendar.MONTH));//4

System.out.println(c.get(Calendar.YEAR)+","+c.get(Calendar.MONTH)+","+c.get(Calendar.DAY_OF_MONTH));//2018,4,30

Date d = new Date(2000);

c.set(Calendar.MONTH,8);//设置日历的某个字段

System.out.println(c.get(Calendar.MONTH));//8      返回该字段值

c.setTime(d);//传入Date对象,返回日历(Date---->Calendar)

System.out.println(c);//java.util.GregorianCalendar[time=2000,areFieldsSet=true,areAllFieldsSet=true...

System.out.println(c.getTime());//Thu Jan 01 08:00:02 CST1970(Calendar---->Date)

练习题:

package lianxi;

import java.text.DateFormat;

import java.util.Scanner;

importjava.text.ParseException;

importjava.text.SimpleDateFormat;

import java.util.Calendar;

import java.util.Date;

public class Lianxi5 {

    public static void main(String[] args) throws ParseException {

       //计算我已经来到这个世界上多少天了

       DateFormat d = new SimpleDateFormat("yyyy年MM月dd日");

       String birth = "1996年01月01日";

       Date bir = d.parse(birth);

       Date now = new Date();

       int days = (int)((now.getTime()-bir.getTime())/1000/3600/24);

       System.out.println("我已经来到这个世界"+days+"天了");

       //获取昨天的这个时刻

       Calendar c = Calendar.getInstance();

       c.add(Calendar.DAY_OF_MONTH, -1);

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

       //如何获得任意年份二月有多少天?  

       System.out.println("请输入年份:");

        Scanner sc = newScanner(System.in);

       int year = sc.nextInt();

       Calendar c1 = Calendar.getInstance();

       c1.set(Calendar.YEAR,year);

       c1.set(Calendar.MONTH, 2);//系统中的月份是从0开始,这里输入2就是系统的3月份

       c1.set(Calendar.DAY_OF_MONTH, 1);//3月1日

       c1.add(Calendar.DAY_OF_MONTH, -1);//3月1日往前倒退一天即2月最后一天

       int days1 = c1.get(Calendar.DAY_OF_MONTH);//获取2月最后一天的天数是本月第几天

       //System.out.println(days1);

       System.out.println(year+"年的2月共有"+days1+"天");

    }

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

QYHuiiQ

听说打赏的人工资翻倍~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值