java时间(Date)类

Date类

Java的java.util包中提供了Date类来操作日期和时间,使用Date类时,需要先创建Date类对象,Date类的构造方法及说明如下表:

构造方法功能描述
Date()分配Date对象并初始化此对象,以表示分配它的时间(精确到毫秒)
Date(long date)分配Date对象并初始化此对象,以表示从标准基准时间(即1970年1月1日00:00:00 GMT)以来的指定毫秒数

例如,使用Date类的第二种构造方法创建一个Date类对象,代码如下:

long timeMillis = System.currentTimeMillis();
Date date = new Date(timeMillis);

上面代码中的System.currentTimeMillis()主要用来获取系统当前时间距基准时间(1970年1月1日00:00:00 GMT)的毫秒数。

Date类的常用方法说明如下表:

方法返回值功能描述
after(Date when)Boolean测试当前日期是否在指定的日期之后
before(Date when)Boolean测试当前日期是否在指定的日期之前
getTime()long获得自1970年1月1日00:00:00 GMT开始到现在所表示的毫秒数
setTime(long time)void设置当前Date对象所表示的日期时间值,该值用以表示1970年1月1日00:00:00 GMT以后time毫秒的时间点

使用Date类的getTime()方法获取自1970年1月1日00:00:00 GMT开始到现在当前时间的毫秒数,代码如下:

import java.util.Date;

public class Demo {
	public static void main(String[] args) {
		Date date = new Date(); // 创建现在的日期
		long value = date.getTime(); // 获得毫秒数
		System.out.println("当前日期、时间:" + date);
		System.out.println("从基准时间到当前时间所经过的毫秒数为:" + value);
	}
}

返回结果;

当前日期、时间:Thu Dec 12 15:18:27 CST 2019
从基准时间到当前时间所经过的毫秒数为:1576135107907

从上面实例可以看出,如果在程序中直接输出Date对象,显示的是Thu Dec 12 15:18:27 CST 2019,那么如何将日期或者时间显示为2019-12-12或者15:18:27这样的格式呢?

为了解决上述问题,java的java.text包中提供了DateFormat类,DateFormat类的作用是按照指定格式对日期或者时间格式化,DateFormat类提供了4种默认格式化风格,即SHORT、MEDIUM、LONG、FULL

  • SHORT:完全为数字,如12.13.52或3:30pm;
  • MEDIUM:较长,如Jan 12,1952;
  • LONG:更长,如january 12,1952或3:30pm;
  • FULL:完全指定,如Tuesday、April12/1952AD或者3:20:42pmPST;

另外,使用DateFormat类还可以自定义日期、时间的格式,要自定义日期、时间格式,首先需要创建DateFormat类对象,由于DateFormat类时抽象类,因此需要使用DateFormat类的静态方法getDateInstance()创建DateFormat类对象,语法如下:

DateFormat df = DateFormat.getDateInstance();

DateFormat常用方法及说明如下表:

方法返回值功能描述
format(Date date)String将一个Date格式化为日期/时间字符串
getCalendar()Calendar获取与此日期/时间格式器无关联的日历
getDateInstance()static DateFormat获取日期格式器,该格式器具有默认语言环境的默认格式化风格
getDateTimeInstance()static DateFormat获取日期/时间格式器,该格式器具有默认语言环境的默认格式化风格
getInstance()static DateFormat获取SHORT风格的默认日期/时间格式器
getTimeInstance()static DateFormat获取时间格式器,该格式器具有默认语言环境的默认格式化风格
parse(String source)Date将字符串解析成一个日期,并返回这个日期的Date对象

日期格式化转换字符如下表:

字母含义
Y
M年中的月份
d月份中的天数
E星期中的天数
aAm(上午)/pm(下午)标记
H一天中的小时数
M小时中的分钟数
s分钟中的秒数

 

 

 

 

 

 

 

 

 

以下实例是格式化当前日期、和当前时间,代码如下:

import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;

public class Demo{
	public static void main(String[] args) {
		// 创建日期
		Date date = new Date();
		// 创建不同的日期格式
		DateFormat df1 = DateFormat.getInstance();
		DateFormat df2 = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss EE");
		DateFormat df3 = new SimpleDateFormat("yyyy年MM月dd日 hh时mm分ss秒 EE", Locale.CHINA);
		DateFormat df4 = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss EE", Locale.US);
		DateFormat df5 = new SimpleDateFormat("yyyy-MM-dd");
		DateFormat df6 = new SimpleDateFormat("yyyy年MM月dd日");
		// 将日期按照不同格式进行输出
		System.out.println("-------将日期时间按照不同格式进行输出------");
		System.out.println("按照Java默认的日期格式: " + df1.format(date));
		System.out.println("按照Java默认的日期格式: " + df1.format(date));
		System.out.println("按照指定格式 yyyy-MM-dd hh:mm:ss EE,系统默认区域:" + df2.format(date));
		System.out.println("按照指定格式 yyyy年MM月dd日 hh时mm分ss秒 EE,区域为中国 : " + df3.format(date));
		System.out.println("按照指定格式 yyyy-MM-dd hh:mm:ss EE,区域为美国: " + df4.format(date));
		System.out.println("按照指定格式 yyyy-MM-dd: " + df5.format(date));
		System.out.println("按照指定格式 yyyy年MM月dd日: " + df6.format(date));
	}
}

返回结果:

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值