8.3-8.3.2 时间处理相关类

核心类:java.util.Date
java.text.DateFormat 用来将字符串的时间对象进行转化
java.util.Calendar 将常见的年月日等日期对象进行转化
今天主要学习这三个
Date类:
long 类型的变量来表示时间,精确到毫秒
获得当前的时刻的毫秒数方法如下

long now=System.currentTimeMillis();

创建date对象时会出现两种调用的情况:

Date d=new Date();
  1. java.sql
  2. java.util 这个才是正确的。

下面我们来看Date的源码:

public Date() {
        this(System.currentTimeMillis());
    }

说明Date调用了当前时间,因此,如果代码不输入值

public class TestDate {
	public static void main(String[] args) {
		Date d=new Date();
		System.out.println(d);
	}
}

返回:Sat Apr 25 10:47:44 CST 2020
即为当前时间。
另外一条

public Date(long date) {
        fastTime = date;
}

因此可以输入值并返回相应的时间。
掌握最后一个方法:getTime()

public class TestDate {
	public static void main(String[] args) {
		Date d=new Date();
		System.out.println(d.getTime());
	}
}

返回:1587783701229,当前日期的毫秒数

DateFormat类和SimpleDateFormat类

一般使用SimpleDateFormat类。
DateFormat 来自于包 java.text.DateFormat ,源码如下:

public abstract class DateFormat extends Format {
}

表明属于抽象类,抽象类不能被new,因此创建对象时:

DateFormat df=new SimpleDateFormat(??);

?号处需要填入对象,我们引进格式化字符的含义,如下图所示:

public final StringBuffer format(Object obj, StringBuffer toAppendTo,FieldPosition fieldPosition)
    {
        if (obj instanceof Date)
            return format( (Date)obj, toAppendTo, fieldPosition );
        else if (obj instanceof Number)
            return format( new Date(((Number)obj).longValue()),toAppendTo, fieldPosition );
        else
            throw new IllegalArgumentException("Cannot format given Object as a Date");
    }

格式化

public Date parse(String source) throws ParseException
    {
        ParsePosition pos = new ParsePosition(0);
        Date result = parse(source, pos);
        if (pos.index == 0)
            throw new ParseException("Unparseable date: \"" + source + "\"" ,pos.errorIndex);
        return result;
    }

上面代码parse的作用为把字符串解析为时间
以及

public abstract StringBuffer format(Date date, StringBuffer toAppendTo,FieldPosition fieldPosition);

时间转换为字符串

在这里插入图片描述
最常见的格式化字符串语句如下所示:

public class TestDateFormat {
	public static void main(String[] args) {
		//把时间对象按照“格式字符串指定的格式”转成相应的字符串“
		DateFormat df=new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
		String str=df.format(new Date(4000000));
		System.out.println(str);
	}
}

输出结果:1970-01-01 09:06:40
相应的:

public class TestDateFormat {
	public static void main(String[] args) throws ParseException {
	    //把字符串按照“格式字符串指定的格式”,转成相应的时间对象
		DateFormat df2=new SimpleDateFormat("yyyy年MM月dd日 hh时mm分ss秒");
		Date date=df2.parse("1983年5月10日 10时45分59秒");
		System.out.println(date);
	}
}

输出结果为:Tue May 10 10:45:59 CST 1983
当然,也可以测试其他字符格式,如今天是今年的多少天

public class TestDateFormat {
	public static void main(String[] args){
		DateFormat df3=new SimpleDateFormat("D");
		String str3=df3.format(new Date());
		System.out.println(str3);
	}
}

输出结果:116 表示今天是今年的116天,阔怕!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值